解决上项目欧拉一个问题,我在论坛上遇到下列Haskell代码来后:哈斯克尔缓存
fillRow115 minLength = cache where
cache = ((map fillRow115' [0 ..]) !!)
fillRow115' 0 = 1
fillRow115' cells = sum (map cache [0..cells-minLength]) + cache (cells-1)
我刚开始这个星期的学习Haskell和似乎无法理解这段代码。可有人请解释以下2项:
- 对我来说,它看起来像只有一个参数
minLength
,但功能需要两个参数在ghci中运行。这个其他论点在哪里起作用? - 从我能在网上找到的,
!!
是列表索引运算符,当调用[list] !! n
时返回第n个元素。上面的代码似乎只用一个参数来调用它。那是干什么的?
P.S.如果有人想拷贝这些代码来解决Project Euler问题,它似乎没有给出正确的答案。