【发布时间】:2021-05-23 05:55:34
【问题描述】:
您可能已经猜到了。我已经完成了“Learn you a Haskell”,但我仍然在努力学习基础知识。
我正在看这个帖子 Split a number into its digits with Haskell 有了这个功能,事情就开始变得有意义了
digits :: Integer -> [Int]
digits n = map (\x -> read [x] :: Int) (show n)
丹尼尔问。
我知道 show 会将我的输入数字作为字符串或字符列表返回,然后我可以使用 map 逐个元素地修改它。因此,每个作为 Char 的“x”被匿名函数挑选并作为 Integer 读取,新列表由 map 组成,包含所有读取的整数。那么read [x] 不应该是read x 吗?为什么列表中的每个读取 Char 都需要作为它自己的单例列表返回?在我看来,这种调用digits 123 的方式应该返回[[1],[2],[3]],因为map 无论如何都会将所有内容组合到一个新列表中,而不是正确的[1,2,3]。但为什么呢?
【问题讨论】:
标签: haskell