repeat,cycle,iterate
repeat,cycle,iterateでrepeat,cycle,iterateを定義してみる
--repで定義したrep rep x = x : rep x --cycで定義したrep rep_cyc x = cyc [x] --iterで定義したrep rep_iter = iter id --cycで定義したcyc cyc xs = xs ++ cyc xs --repで定義したcyc cyc_rep = concat . rep --iterで定義したcyc cyc_iter = concat . iter id --iterで定義したiter iter f x = x : map f (iter f x) --repで定義したiter iter_rep f = foldr (\y r->f y : map f r) [] . rep --cycで定義したiter iter_cyc f x = foldr (\y r->f y : map f r) [] $ cyc [x]