【发布时间】:2021-09-17 19:44:57
【问题描述】:
假设我有一个整数列表(x:xs),所以(x:xs) :: Int。
我想在同一行连接并打印这些整数。所以当我执行printL [4,3,4] 时,我希望函数将"434" 作为输出。
我试过了:
printL :: [Int] -> String
printL (x:xs) = chr x ++ printL xs
我的想法是,对于列表中的每个元素,它都会占据头部(所以x)。使用chr 函数将其转换为字符串,然后将其与printL xs 连接(这将递归地再次执行相同的步骤)。
如你所见,我被卡住了,而且我刚开始学习,肯定有很多错误。
【问题讨论】:
-
尝试使用
show x而不是chr x:您不需要将Unicode 代码点转换为字符,而是将数字转换为十进制数字。这是由show完成的。另外,不要忘记为递归printL [] = ...添加一个基本情况。 (当你能更流利地使用 Haskell 时,你会写printL = concatMap show,但目前它有助于练习基础知识)。
标签: haskell