2011-06-23 9 views
2

私はちょうどSMLを学び始め、まだそのエラーメッセージを理解しています。シンプルなSMLコードエラー

入力に

val rec : real->real = fn 0.0 => 0.0 | n:real => 1.0/n; 

以下の関数定義をしようとしたとき、私は次のエラーを取得する:

stdIn:25.9-25.17 Error: syntax error: deleting COLON ID ARROW 
stdIn:25.24-25.33 Error: syntax error: deleting FN REAL DARROW 
stdIn:25.38 Error: syntax error found at BAR 

誰かが私が間違っているのかを指し示すことができますか?

ありがとうございました。

答えて

4

あなたはあなたのコード内の2個のエラーがあります:あなたが定義している値の名前があるはずval recと型注釈間

  1. を。
  2. realでパターンマッチングを使用することはできません。 realは不正確なので、等価型ではないので、=も使用できません。実数を比較するにはReal.==を使用する必要があります(またはそれよりも優れています:同等かどうかを比較しないで、代わりにいくつかのデルタと比較してください)。
+0

hello sepp2k。答えをありがとう。私は実際の署名をチェックし、あなたが言及した "=="関数を見つけました。私はまだあなたが言及したポイント1で明確ではありません.. SMLのキーワードを 'rec'しています(私はちょうどそれを逆型の短い形式として選んだ) – ankit

+0

@ankit:はい、 'rec'はキーワードです定義は再帰的になる。 – sepp2k

+0

が完璧です。再帰関数に関する章を読んだので今は意味をなさない...すべての助けてくれてありがとう! – ankit