0

私はHaskell(私もまったく新しい)を使おうとしていますが、ghciを使ってこれをコンパイルしようとするたびにNot in scope: 'isNumber'、何が間違っているのでしょうか?

digits :: [a] -> Bool
digits a = digits a True


digits1 :: [a] -> Bool -> Bool
digits1 [] False      = False           
digits1 [] True       = True            
digits1 (l:ls) True   = digits ls isNumber l
digits1 (l:ls) False  = False
4

1 に答える 1

7

インポートしなかっisNumberたモジュールで が定義されているため、このエラー メッセージが表示されます。Data.Charそれをインポートすると、そのエラーが修正されます。

しかし、それはあなただけの問題ではありません。もう 1 つの問題は、4 つの引数でdigits ls isNumber l呼び出すことですが、引数を 1 つだけ取るようにdigits定義しています。digits

同様に、呼び出しdigits a Truedigits2つの引数で呼び出します-同じ問題。2 つの引数を取るので、おそらくdigits1 a Trueここに書くつもりでした。digits1

最後に、両方ともdigits任意のリストを引数として取るように定義されていますが、リストの要素digits1を呼び出したいようです。は任意の値ではなく sでのみ機能する関数であるisNumberため、代わりにs のリスト (つまり a ) を使用する必要があります。isNumberCharCharString

于 2013-03-16T21:45:31.673 に答える