二進表記を8ビットの長さになるようにする関数make8を改変して、さらにパリティビットを付加するプログラムmake9を書きましたがエラーがでてしまいました。よろしければ回答よろしくおねがいします。
Haskell
1import Data.Char 2type Bit = Int 3 4make8 bits = take 8 (bits ++ repeat 0) 5 6>make8 [1,0,1,1] 7[1,0,1,1,0,0,0,0]
Haskell
1make9 bits | odd . length . filter(/=0) == True = take8 (bits ++ repeat 0) ++ [1] 2 | otherwise = take 8 (bits ++ repeat 0) ++ [0]
以下、エラー文です。
haskell
1 • Couldn't match expected type ‘[a0] -> Bool’ 2 with actual type ‘Bool’ 3 • In the second argument of ‘(==)’, namely ‘True’ 4 In the expression: odd . length . filter (/= 0) == True 5 In a stmt of a pattern guard for 6 an equation for ‘make9’: 7 odd . length . filter (/= 0) == True 8 | 916 | make9 bits | odd . length . filter(/= 0) == True = take 8 (bits ++ repeat 0) ++ [1] 10 |
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。