RosettaCodeData/Task/Look-and-say-sequence/Miranda/look-and-say-sequence.miranda
2023-07-01 13:44:08 -04:00

12 lines
361 B
Text

main :: [sys_message]
main = [Stdout (lay (take 15 (iterate looksay "1")))]
looksay :: [char]->[char]
looksay = concat . map f . split
where f xs = show (#xs) ++ [hd xs]
split :: [*]->[[*]]
split = foldr f []
where f x [] = [[x]]
f x (ys:yss) = (x:ys):yss, if x = hd ys
= [x]:ys:yss, otherwise