[過去ログ] 関数型プログラミング言語Haskell Part22 (1001レス)
前次1-
抽出解除 必死チェッカー(本家) (べ) 自ID レス栞 あぼーん

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
459
(1): 2013/03/23(土)12:41 ID:WFTkAEQe!(1/4) AAS
質問でも良かな?
461: 2013/03/23(土)12:42 ID:WFTkAEQe!(2/4) AAS
ありがとう。最近haskellを始めた。
haskell99の1~10をやっているのだが、9の問題で詰まった。

duplicateSet :: (Eq a) => [a] -> [a]
duplicateSet list = case (list) of
[] -> []
(x:y:xs)
| x == y -> y : duplicateSet (x:xs)
| otherwise -> [x]

deleteSet :: (Eq a) => [a] -> [a] -> [a]
deleteSet originaList set = case (originaList) of
(x:xs) -> case (set) of
(y:ys)
| x == y -> deleteSet xs ys
| otherwise -> error"Something wrong"
[] -> (x:xs)
_ -> error"Need at least one element"

pack :: (Eq a) => [a] -> [[a]]
pack list = case (list) of
[] -> [[]]
(x:xs) -> (duplicateSet list) : pack (deleteSet list (duplicateSet list))
463
(1): 2013/03/23(土)12:42 ID:WFTkAEQe!(3/4) AAS
失敬。例えば、
*Main> pack [1,1,1,2,2,3,4,4]
[[1,1,1],[2,2],[3],[4,4],[]]
があったとき、どうすれば最後の[]を消せるのだろうか?
元をちょこっと書き足してみたのだが。
duplicateSet :: (Eq a) => [a] -> [a]
duplicateSet list = case (list) of
[] -> []
[x] -> [x]
(x:y:xs)
| x == y -> y : duplicateSet (x:xs)
| otherwise -> [x]

deleteSet :: (Eq a) => [a] -> [a] -> [a]
deleteSet originaList set = case (originaList) of
[] -> []
(x:xs) -> case (set) of
(y:ys)
| x == y -> deleteSet xs ys
| otherwise -> error"Something wrong"
[] -> (x:xs)
-- _ -> error"Need at least one element"
466
(1): 2013/03/23(土)12:42 ID:WFTkAEQe!(4/4) AAS
なぜ、[[]]が[]なのだろう?
[a] : [[]] -> [[a], ... []]にならないのだろうか?
[a]:[]はエラーな気がするのだが。
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.040s