【问题标题】:Outputting a list in Haskell without the brackets, and over a range?在没有括号的Haskell中输出一个列表,并且在一个范围内?
【发布时间】:2015-05-20 14:32:19
【问题描述】:

我有一个返回列表的函数,称之为f n

如果我打印列表,它看起来像 [1,2,3,4],而我希望它看起来像 1 2 3 4

我还想在n 的范围内输出许多列表,所以第一行是f 1,第二行是f 2,... 第n 行是f n

我的 f n 函数正在运行,但无法让输出在我的一生中正常工作。

当前尝试:

main = do
    n <- readLn :: IO Int
    mapM_ putStrLn [f i | i <- [1..n]]

【问题讨论】:

    标签: list haskell


    【解决方案1】:

    你可以这样做

    list_to_string = unwords . map show
    

    得到你想要的输出格式。然后代替做

    print [1, 2, 3, 4]
    

    你可以的

    putStrLn $ list_to_string $ [1, 2, 3, 4]
    

    应该显示你想要的方式。

    编辑:至于打印范围,试试这个:

    main = do
      n <- readLn :: IO Int
      mapM_ (putStrLn . list_to_string) [ f i | i <- [1..n] ]
    

    【讨论】:

    • 在一个范围内输出 f n 怎么样?
    • 我不确定我是否理解你问题的那一部分。你是说f 接受一个数字并返回一个数字列表?
    • 我发布的代码有什么问题?为什么这行得通,但我的不行?
    • putStrLn 打印一个String。不是数字或列表或其他任何东西,只有String。您需要一些其他函数首先将其转换为字符串。 mapM_ print 可以工作(但不会给你你想要的格式)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-04
    • 1970-01-01
    • 2016-01-14
    相关资源
    最近更新 更多