質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.37%
Haskell

Haskellは高い機能性をもった関数型プログラミング言語で、他の手続き型プログラミング言語では難しいとされている関数でも容易に行うことができます。強い静的型付け、遅延評価などに対応しています。

Q&A

解決済

1回答

1027閲覧

パリティビット付加のプログラムのエラー

old.exe

総合スコア23

Haskell

Haskellは高い機能性をもった関数型プログラミング言語で、他の手続き型プログラミング言語では難しいとされている関数でも容易に行うことができます。強い静的型付け、遅延評価などに対応しています。

0グッド

0クリップ

投稿2021/08/26 15:00

編集2021/08/26 15:07

二進表記を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

1Couldn't match expected type[a0] -> Bool2 with actual typeBool3In the second argument of(==), namelyTrue4 In the expression: odd . length . filter (/= 0) == True 5 In a stmt of a pattern guard for 6 an equation formake9: 7 odd . length . filter (/= 0) == True 8 | 916 | make9 bits | odd . length . filter(/= 0) == True = take 8 (bits ++ repeat 0) ++ [1] 10 |

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

この部分の (=) の両辺の型が違うのが問題です。左辺が関数で右辺が Bool になっています。

haskell

1odd . length . filter (/=0) == True

bits に適用するのを忘れているように見えます。

haskell

1odd (length (filter (/=0) bits)) == True

Wandbox で実行

投稿2021/08/26 22:24

kakkun61

総合スコア285

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.37%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問