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 の学習を始めたばかりで、このコードを理解できないようです。どなたか、次の 2 点について説明していただけないでしょうか。
- 私には引数が 1 つしかないように見えます
minLength
が、関数を ghci で実行するには 2 つの引数が必要です。この別の議論はどこで出てくるのでしょうか? - 私がオンラインで見つけることができた
!!
のは、リスト インデックス演算子であり、 as と呼ばれると n 番目の要素を返します[list] !! n
。上記のコードは、引数を 1 つだけ指定して呼び出しているようです。それは何をしているのですか?
PS 誰かがこのコードをコピーして Project Euler の問題を解決しようと考えている場合、正しい答えが得られないようです。