在解决了 Project Euler 上的一个问题后,我在论坛中遇到了以下 Haskell 代码:
fillRow115 minLength = cache where
cache = ((map fillRow115' [0 ..]) !!)
fillRow115' 0 = 1
fillRow115' cells = sum (map cache [0..cells-minLength]) + cache (cells-1)
我这周刚开始学习 Haskell,似乎无法理解这段代码。有人可以解释以下两项:
- 对我来说,它看起来只有一个参数
minLength
,但该函数需要 2 个参数才能在 ghci 中运行。这另一个论点在哪里发挥作用? - 从我在网上可以找到
!!
的是列表索引运算符,并在调用时返回第 n 个元素[list] !! n
。上面的代码似乎只用一个参数调用它。那是在做什么?
PS如果有人想复制这段代码来解决Project Euler问题,它似乎没有给出正确的答案。