2017-07-12 9 views
2

Idris REPLで関数を書くにはどうすればいいですか?私はREPLで関数定義​​を入力すると、私は次のエラーメッセージが表示されます:Idris REPL:関数を作成する

(input):1:7: error: expected: "$", 
    "&&", "*", "*>", "+", "++", "-", 
    "->", ".", "/", "/=", "::", "<", 
    "<$>", "<*", "<*>", "<+>", "<<", 
    "<=", "<==", "<|>", "=", "==", 
    ">", ">=", ">>", ">>=", "\\\\", 
    "`", "|", "||", "~=~", 
    ambiguous use of a left-associative operator, 
    ambiguous use of a non-associative operator, 
    ambiguous use of a right-associative operator, 
    end of input, function argument 
longer: string -> string -> string<EOF> 
    ^

答えて

5

Idris documentationはあなたが必要なものの例があります。 :letコマンドを使用する必要があります。このように:あなたは、関数の種類を入力すると、イドリスREPLスマート何もしない

Idris> :let longer : String -> String -> String; longer s1 s2 = if length s1 > length s2 then s1 else s2 
Idris> longer "abacaba" "abracadabra" 
"abracadabra" : String 

デフォルトでは、それはいくつかのスマートな複数行モードに入りません。 :letコマンドは、REPL内のトップレベルのバインディングを定義するために使用されます。

もう1つの瞬間:文字列型を使用する場合は、stringの代わりにString(大文字で始まる)を使用する必要があります。

+0

ありがとう、それは動作しますが、マルチライン機能を作成する方法はありますか?最初の行の定義や他の行の説明と同様です。 – Moebius

+0

行の最後に 'shift + enter'または' alt + enter'を試してください。 – laughedelic

+0

@laughedelicはiterm 2(mac)では動作しません。 – Moebius

関連する問題