関数型プログラミング言語Haskell Part12
■ このスレッドは過去ログ倉庫に格納されています
0860デフォルトの名無しさん
2010/09/21(火) 00:27:37data Nt = Succ | Pred
data Nrs s e li = Li Nt s (Ni e)
tolist (Li t s e) = case (t,e) of
(Succ,Limit l) -> [s..l]
(Succ,Infinity) -> [s..]
(Pred,Limit l) -> [ s + (l - x) | x <- [s..l]]
reverse_ (Li t s e) = case t of
Succ -> Li Pred s e
Pred -> Li Succ s e
take_ n (Li t s e) = case (t,e) of
(Succ,Limit l) -> Li t s (Limit (min (s + n - 1) l))
(Succ,Infinity) -> Li t s (Limit (s + n - 1))
(Pred,Limit l) -> Li t (max s (l - n + 1)) (Limit l)
tolist (reverse_ (take_ 3 (reverse_ (reverse_ (Li Succ 123 Infinity)))))
もういいよコードが読めないならわからなくていいよ。
■ このスレッドは過去ログ倉庫に格納されています