[過去ログ]
関数型プログラミング言語Haskell Part22 (1001レス)
関数型プログラミング言語Haskell Part22 http://echo.5ch.net/test/read.cgi/tech/1364009659/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
リロード規制
です。10分ほどで解除するので、
他のブラウザ
へ避難してください。
341: デフォルトの名無しさん [sage] 2013/03/23(土) 12:40:00.00 The Glorious Glasgow Haskell Compilation System, version 7.4.2を使っています。 uniq :: Eq a => [a] -> [a] uniq [] = [] uniq [x] = [x] uniq (x1:xs@(x2:_)) | x1 == x2 = uniq xs | x1 /= x2 = x1 : uniq xs というコードを書いてコンパイルすると、 retu.hs:27:1: Warning: Pattern match(es) are non-exhaustive In an equation for `uniq': Patterns not matched: _ : (_ : _) と言われます。 このuniqの定義は自分にはexhaustiveに思えるのですが、 何か見落としているのでしょうか。 http://echo.5ch.net/test/read.cgi/tech/1364009659/341
343: デフォルトの名無しさん [sage] 2013/03/23(土) 12:40:02.00 >>341 こちらも、ghc 7.6.2 で問題なかった。 http://echo.5ch.net/test/read.cgi/tech/1364009659/343
344: デフォルトの名無しさん [sage] 2013/03/23(土) 12:40:03.00 >>341 パターンじゃなくて、ガードに問題がある == と /= ですべての状態をカバーしてると思われてない uniq :: Eq a => [a] -> [a] uniq [] = [] uniq [x] = [x] uniq (x1:xs@(x2:_)) | x1 == x2 = uniq xs | otherwise = x1 : uniq xs でok あるいは /= の実装で otherwise を使えばokかと http://echo.5ch.net/test/read.cgi/tech/1364009659/344
346: 341 [sage] 2013/03/23(土) 12:40:05.00 なるほど、ありがとうございます 確かに==と/=だと、それぞれの演算子の意味を解析しないと exhaustiveかどうか分からないですからね /=の実装がotherwiseとおっしゃっているのは、 f x | hoge x = True | otherwise = false notF x = not $ f x のような実装をすればパターンマッチで判定が出来るから、 という事ですか? http://echo.5ch.net/test/read.cgi/tech/1364009659/346
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.039s