関数型プログラミング言語Haskell Part3
at TECH
[
2ch
|
▼Menu
]
■コピペモード
□
スレを通常表示
□
オプションモード
□このスレッドのURL
■項目テキスト
200:デフォルトの名無しさん 04/09/10 16:25:19 >>197-198 なにができないと? take' 0 xs = xs take' n (x:xs) = take' (n - 1) xs take n (take' 10 [0..]) 201:197 04/09/10 21:59:52 >>200 返値も無限リストの場合です。 nub0 :: Eq a => [a] -> [a] nub0 = nub0' [] nub0' l [] = l nub0' l (x:xs) | elem x l = nub0' l xs | otherwise = nub0' (x:l) xs take 10 (nub0 [1..]) 202:デフォルトの名無しさん 04/09/10 22:16:02 >>201 nub0 [1..]自体がbottom(無限リストではない)なんだから 末尾再帰も糞もないですよ。 nub0' :: [Int] -> Int nub0' = foldr (+) 0 だって同じこと。 203:197 04/09/10 23:25:33 いろいろと書き方がまずくてすみません。 nub0 を末尾再帰で定義したから、nub0 [1..] が bottomになったわけで、Hugsでの定義の nub l = nub' l [] where nub' [] _ = [] nub' (x:xs) ls | x `elem` ls = nub' xs ls | otherwise = x : nub' xs (x:ls) のようにすれば nub [1..] は無限リストになる、という意味です。
次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
レスジャンプ
mixiチェック!
Twitterに投稿
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch
5384日前に更新/259 KB
担当:undef