解決上項目歐拉一個問題,我在論壇上遇到下列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問題,它似乎沒有給出正確的答案。