2010-10-23 25 views
1

avec ce codeentier à [chaîne]

digs 0 = [] 

digs x = x `mod` 1000 : digs (x `div` 1000) 

par exemple: 24889375
nous prenons le résultat [375,889,24]

comment puis-je faire celui ["375","889","024"]

Répondre

3
Prelude> import Text.Printf 
Prelude Text.Printf> map (printf "%03d" :: Int -> String) [375,889,24] 
["375","889","024"] 
+0

comment puis-je mettre cela ensemble avec le code là-haut – marco

+0

@ifan: 'map (printf"% 03d ":: Int -> String) (digs 24889375)'. – kennytm

+0

merci beaucoup ... – marco

2

Le plus idiomatiques façon de le faire est d'utiliser les fonctions map et show.

Prelude> map show [375,889,24] 
["375","889","024"] 

show peut être utilisé pour convertir la plupart des valeurs à une chaîne. map applique cette fonction à tous les éléments d'une liste map.

+0

qui fournit ["375", "889", "24"] sauf 0 – marco

+2

OK alors: 'map (queue. Show. (+ 1000)) [375, 889, 24]' – Yitz