私は1ヶ月ほど自分自身にハスケルを教えてきましたが、今日は16番目の問題の解決策を読んでいて、質問がありました。ここでリストからn番目の要素を削除
がリンクである:http://www.haskell.org/haskellwiki/99_questions/Solutions/16
基本的に、この質問は、リストからすべてのN番目の要素をドロップ機能を作成するように求められます。例えば 、
*Main> dropEvery "abcdefghik" 3
"abdeghk"
リンクの最初のソリューションは、dropEveryがdropEveryは「の世話をすることができますしながら、空のリストの場合を定義し、なぜ私の質問がある
dropEvery :: [a] -> Int -> [a]
dropEvery [] _ = []
dropEvery (x:xs) n = dropEvery' (x:xs) n 1
where
dropEvery' (x:xs) n i = (if (n `divides` i) then [] else [x])++ (dropEvery' xs n (i+1))
dropEvery' [] _ _ = []
divides x y = y `mod` x == 0
です空リスト? 私はdropEvery [] _ = []
を単に排除して、次のように他の文章を少し変更するだけで、上記と全く同じように動作し、より短く見えるはずだと思います。
誰でも私がこれについて把握するのを助けることができますか?
この関数の引数の順序は「間違っています。このような関数は、通常はInt - > [a] - > [a] 'であり、通常はパイプラインの状況でははるかに便利です。なぜ彼らはその例の中でそれを反対に置いても、私は分かりません。 – leftaroundabout