2016-07-05 23 views
8

Elm supporta [1..100], ma se provo ['a'..'z'], il compilatore mi dà una mancata corrispondenza di tipo (si aspetta un numero, ottiene un Char). C'è un modo per far funzionare questo?Espressioni di intervallo in Elm

risposta

17

Basta creare una serie di numeri e la mappa di caratteri:

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

Modifica, o come una funzione:

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 

Modifica, da Elm 0,18 e fino , List.range è finalmente una funzione:

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

La sintassi '[..]' è stata rimossa in Elm 0.18, quindi ora è necessario sostituire qualsiasi istanza di '[a .. b]' con 'List.range a b'. Nota che il tipo di 'List.range' è' Int -> Int -> List Int', quindi non funzionerà con i caratteri. –