Est-il possible de changer la taille de l'étape de la fonction de gamme haskell intégrée ou littéral?

StackOverflow https://stackoverflow.com/questions/529625

Question

La valeur par défaut

[1..5]

donne cette

[1,2,3,4,5]

et peut également être fait avec la fonction de gamme. Est-il possible de changer la taille de l'étape entre les points, pour que je puisse obtenir quelque chose comme ce qui suit à la place?

[1,1.5,2,2.5,3,3.5,4,4.5,5] 
Était-ce utile?

La solution

[1,1.5..5]

Autres conseils

Vous devez être prudent avec arithmétique en virgule flottante. Il ne peut pas représenter 1.1 précisément, donc si vous essayez

Prelude> [0,0.1 .. 1]
[0.0,0.1,0.2,0.30000000000000004,0.4,0.5,0.6,0.7,0.7999999999999999,0.8999999999999999,0.9999999999999999]

La meilleure façon est plus comme:

Prelude> map (/10) [0..10]
[0.0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0]

En fait, [1..5] est le sucre syntaxique pour

enumFromTo 1 5 

et [1,1.5..5] pour

enumFromThenTo 1 1.5 5

Pour plus d'informations, consultez http://en.wikibooks.org/wiki/Haskell/Syntactic_sugar

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top