2017-06-21 2 views
1

Je voudrais écrire une fonction qui retourne deux listes dans Elm mais je rencontre des problèmes. Il semble que le compilateur ne peut pas correspondre aux types de la liste vide [].Retour d'un tuple de listes de la fonction

import Html exposing (text) 

main = 
    let 
    (a, b) = genList 
    in 
    text "Hello" 


genList: List Float List Float 
genList = 
    ([], []) 

Les erreurs du compilateur sont les suivantes:

Detected errors in 1 module. 


-- TYPE MISMATCH --------------------------------------------------------------- 

`genList` is being used in an unexpected way. 

6|  (a, b) = genList 
       ^^^^^^^ 
Based on its definition, `genList` has this type: 

    List Float List Float 

But you are trying to use it as: 

    (a, b) 


-- TYPE MISMATCH --------------------------------------------------------------- 

The definition of `genList` does not match its type annotation. 

11| genList: List Float List Float 
12| genList = 
13| ([], []) 

The type annotation for `genList` says it is a: 

    List Float List Float 

But the definition (shown above) is a: 

    (List a, List b) 

Je n'ai trouvé aucune façon de donner un indice de type pour la liste vide. Vérification de la documentation, il ne va pas en profondeur: https://guide.elm-lang.org/core_language.html http://elm-lang.org/docs/syntax#functions

Répondre

3

La signature de type doit également la syntaxe (.., ..) tuple comme:

genList: (List Float, List Float) 
genList = 
    ([], []) 

[] est la syntaxe correcte pour générer une liste vide cependant. Si vous voulez en savoir plus sur le type List, il est probablement préférable de regarder les docs sur package.elm-lang.org. Les deux liens que vous avez partagés sont plus des «guides d'introduction» que des documents complets.