【发布时间】:2021-03-10 10:41:42
【问题描述】:
我有一个[Int] 类型的列表,它只能包含两个值:0 或1。
例如:[0, 0, 1, 1, 0, 0]
我想遍历这个列表,当当前元素为 0 时,打印 '_',如果是 1,则打印 '*'。
对于上一个列表,这是标准输出上的结果:
__**__
我认为我必须这样做:
displayLine :: [Int] -> IO [Int]
displayLine (0 : xs) =
do
print '_'
-- next char
displayLine (1 : xs) =
do
print '*'
-- next char
如何显示一个字符并继续递归下一个字符?
【问题讨论】:
-
你可以……正常打电话给
displayLine,不是吗?但更好的方法是分两部分编写:首先编写[Int] -> String类型的函数来生成要打印的字符串,然后print生成String。
标签: haskell