2012-07-27 14 views
5

私はLYAHから練習しています。私はエラー以下になっています上記のコードをコンパイルしようとしますがには付随するバインディングがありません - それはどういう意味ですか?使い方?

phoneBook :: [(String, String)]

phoneBook.hsファイルには、次のコードが含まれていますbranoの答えと後にコメントの後に追加

*Main> :load "/home/optimight/phoneBook.hs" [1 of 1] Compiling Main (/home/optimight/phoneBook.hs, interpreted)

/home/optimight/phoneBook.hs:1:1: The type signature for `phoneBook' lacks an accompanying binding Failed, modules loaded: none.

質問この回答:上記のタイプシグネチャの実装方法をどのように提供しますか?

私はこの追加した場合:

type phoneBook = [(String, String)]

を私は次のエラーを取得しています:

Prelude> :load "/home/optimight/phoneBook.hs" [1 of 1] Compiling Main (/home/optimight/phoneBook.hs, interpreted)

/home/optimight/phoneBook.hs:2:6: Malformed head of type or class declaration: phoneBook Failed, modules loaded: none

答えて

6

あなたは電話帳の実装を提供する必要があります。

phoneBook :: [(String, String)]は署名にすぎません。

+0

実装を提供することが義務付けられているのはなぜですか?私がhaskellアプリケーションを開発していて、phoneBookがその一部であるなら、私はその中にデータを束ねません。空の電話帳になります。 – Optimight

+0

これを実装するにはどうすればよいですか? – Optimight

+1

@Optimight 'phoneBook = []'。ここに入力する値はプログラム実行中の値になります。トップレベルの値を定義する代わりに、 'phoneBook'は、' State'関数または 'StateT'関数の関数パラメータまたは状態の一部でなければなりません。 – dave4420

1

型を宣言する場合は、最初に大文字の大文字(type PhoneBook = [(String, String)])が必要です。

関数を宣言する場合は、その定義(バインディング)またはその定義と型シグネチャの両方を指定する必要があります。あなたのコードをコンパイルするために、最小限の努力は次のとおりです。

次にあなたがタイプ[(String, String)]例えば、任意の値でundefinedを置き換えることができます[("Person","Number")]

関連する問題