Après Caching la résolution d'un problème sur Euler projet, je suis tombé sur le code Haskell suivant dans le forum:Haskell
fillRow115 minLength = cache where
cache = ((map fillRow115' [0 ..]) !!)
fillRow115' 0 = 1
fillRow115' cells = sum (map cache [0..cells-minLength]) + cache (cells-1)
Je viens de commencer l'apprentissage Haskell cette semaine et ne semblent pas comprendre ce code. Quelqu'un peut-il s'il vous plaît expliquer les 2 éléments suivants:
- Pour moi, il ressemble il n'y a qu'un seul argument
minLength
, mais la fonction nécessite 2 arguments pour fonctionner en ghci. Où cet autre argument entre-t-il en jeu? De ce que j'ai pu trouver en ligne,!!
est l'opérateur d'index de liste et renvoie le nième élément quand appelé[list] !! n
. Le code ci-dessus semble l'appeler avec un seul argument. Qu'est-ce que ça fait?
P.S. Si quelqu'un envisage de copier ce code pour résoudre le problème de Project Euler, il ne semble pas donner la bonne réponse.