私はHaskellの初心者で、shifting
のASCII値を使用してプレーンテキストを暗号化しようとしています。プレーンテキストに数字が含まれている場合は、(0=*,1=',2=~,3=!,[email protected],5=#,6=$, 7=%,8=^,9=&)
のような数字の代わりに特殊記号を入れてエンコードする必要があります。ので、ここで暗号化文字 ''の文字列/ charcterリテラルの字句エラー?
import Data.Char
canEncrypt :: Char -> Bool
canEncrypt c = isLower(c) && isAscii(c)
encryptChar :: Char -> Char -> Char
encryptChar shift c
| canEncrypt c = chr(ord(c)+ord(shift))
| isUpper c = c
| isNumber c = if (c == 0) then '*'
else if (c == 1) then '\'
else if (c == 2) then '~'
else if (c == 3) then '!'
else if (c == 4) then '@'
else if (c==5) then '#'
else if (c==6) then '$'
else if (c==7) then '%'
else if (c==8) then '^'
else '&'
ための私のコードで、ええ、それは少しスパゲッティコードですが、私はそれはのような
|
| lexical error in string/character literal at character ' '
21 | isNumber c = blah blah blah..
|
の下にエラーを示すそれをコンパイルするとき、私は私のドンことをここにひどく間違って何かをやっていると思います何も分かりません。そんな愚かな質問に躊躇しないでください。ちょっと初心者なので、どんな助けもありがとうございます。この種の実装には他にも何か問題がありますか? はここにあなたの問題ですあなた
また、エラーを解決するためのヘルプを求めるときは、今後もエラーメッセージを編集したり略したりしないでください。もしあなたが*あなた*に無意味であっても、あなたがあなたを助けようとしている人々があなたを助けることができるという情報が含まれています。例えば、これは、それが不平を言っていた語彙エラーの正確な文字位置を含んでいたでしょう。 – Ben
スタイルコメント: 'if'チェーンの代わりに' case'を使うことができます。 '0 ' - >' * 'のcase c; '1' - > '\\'; ... '。すべてのケースを同じ列にインデントすることができます。複数の定義式を使用することもできます。 – chi