2016-07-05 10 views
8

Elm unterstützt [1..100], aber wenn ich ['a'..'z'] versuche, gibt mir der Compiler einen Typkonflikt (erwartet eine Zahl, erhält ein Char). Gibt es eine Möglichkeit, dies zu tun?Bereichsausdrücke in Elm

Antwort

17

Nur eine Reihe von Zahlen erstellen und auf Zeichen Karte:

List.map Char.fromCode [97..122] 

bearbeiten oder als Funktion:

charRange : Char -> Char -> List Char 
charRange from to = 
    List.map Char.fromCode [(Char.toCode from)..(Char.toCode to)] 

charRange 'a' 'd' -- ['a','b','c','d'] : List Char 

bearbeiten, aus Ulme 0,18 und bis , List.range ist schließlich eine Funktion:

charRange : Char -> Char -> List Char 
charRange from to = 
    List.map Char.fromCode <| List.range (Char.toCode from) (Char.toCode to) 
+2

Die '[..]' Syntax wurde in Elm 0.18 entfernt, also müssen Sie nun alle Instanzen von '[a .. b]' durch 'List.range a b' ersetzen. Beachten Sie, dass der Typ von 'List.range'' Int -> Int -> List Int' ist, also wird es auch nicht mit Zeichen funktionieren. –