Quelle est la façon dont Haskell de faire cela? Plus d'arrière-plan:
Je résolvez Euler Problème 27 , et j'ai: P> foldl (\(max,v) (n,a,b)-> if n > max then (n , a * b) else (max ,v) ) (0,0) tuple_list
3 Réponses :
Utilisez une compréhension imbriquée de la liste. Ici 'foo' est '(,)' ': ou aménagé pour rendre la nidification plus claire: p>
Cette réponse unique vient de faire autant de choses clic dans ma petite tête de Haskell, merci
Ainsi que la réponse des dons, vous pouvez utiliser la liste Monad:
do i <- [0 .. 999] j <- [0 .. 999] return (foo i j)
Vous pouvez également le faire bien en utilisant Control.Applicatif
C:\programming>ghc --make Main.hs [1 of 1] Compiling Main ( Main.hs, Main.o ) Linking Main.exe ... C:\programming>main foo 0 0 foo 0 1 foo 0 2 foo 0 3 foo 1 0 foo 1 1 foo 1 2 foo 1 3 foo 2 0 foo 2 1 foo 2 2 foo 2 3 foo 3 0 foo 3 1 foo 3 2 foo 3 3