Q: elm 0.15 ne me laissera pas (tail >> head) xs. Comment résoudre cela d'une manière élégante?composer la queue et la tête
module Fibonacci where
import List exposing ((::), head, map2, reverse, tail)
fibonacci : Int -> List Int
fibonacci n =
let fibonacci' n acc =
if n <= 2
then acc
else fibonacci' (n-1) ((head acc + (tail >> head) acc) :: acc)
in
fibonacci' n [1,1] |> reverse
depuis:
head : List a -> Maybe a
tail : List a -> Maybe (List a)
Je ne sais pas comment convertir Maybe (List a) to be List a
Alors, est-il un moyen facile de composer ces deux fonctions sans définir une nouvelle fonction?
Il est difficile de dire, mais si cette question ne concerne pas Haskell, s'il vous plaît enlever l'étiquette Haskell de lui. – Lynn
@Mauris Les gens ajoutent occasionnellement [haskell] à des questions sur les langages inspirés de Haskell comme Elm ou PureScript dans l'espoir de trouver un public plus large de personnes capables d'aider. Je n'ai pas d'opinion arrêtée sur la question de savoir si c'est acceptable ou non. – duplode
Bien qu'il ne s'agisse pas d'une réponse à la question "Comment composer" head' et "tail", si vous voulez vraiment savoir "comment puis-je obtenir la somme des 2 premiers nombres dans un" numéro de liste "? , quand je sais qu'il y a au moins 2 éléments dans la liste? ", alors' take 2 >> sum' fonctionnera pour votre cas.voir: https://gist.github.com/robertjlooby/1950525cb9a4745ecc2d – robertjlooby