3

The Haskell 98 Reportには、次のように書かれています

浮動リテラルには、小数点の前後に数字が含まれている必要があります。これにより、小数点を別のドット文字の使用と間違えることがなくなります。

これは他にどのような用途がありますか?そのような法的表現は想像できません。

(動機を明確にするために:私は多くの人が のような数字を書いていることを知っています9.00.7はこれと完全に仲良くすることはできません0.7.7しかし、末尾の 0 を書き出すことは、ある量が 10 分の 1 まで正確であることを明示しない限り、私にはまったく間違っているように感じ9.0ます。


空白で囲まずに関数合成を書くことは合法であることを忘れていました! もちろん、可能性はありますが、浮動リテラルを貪欲に解析することでこの問題を回避できます。たとえば、replicate 3 . pred$8((replicate 3) . pred) 8but replicate 3.pred$8(replicate 3.0 pred)8です。


空白なしで整数リテラルがa のすぐ隣に立つ必要がある式はありませんか?.

4

4 に答える 4

5

他の使用例の 1 つは、ドット演算子 (またはドットで開始または終了するその他の演算子) ですreplicate 3.pred$8

別の可能な使用法は、範囲式です: [1..10].

9また、(ほとんど)の代わりにいつでも書くことができるため、 の必要性を完全に9.0回避できます。.

于 2011-10-03T22:37:15.040 に答える
3

「9」を許可しても特に問題はないようです。および「.7」。現在の設計は、Haskell の元の設計者のアイデアを反映したものになっていると思います。

于 2011-10-03T22:58:37.140 に答える
3

の最も顕著な用途の 1 つ(.)は、関数合成です。そのため、haskell コンパイラはa . 1、関数 a を数値で構成すると解釈し、何をすべきかわかりません。同様に、その逆です。のその他の使用法について(.)は、こちらを参照してください。

.7vs.に関するその他の問題は0.7、私にはわかりません。

于 2011-10-03T22:35:12.247 に答える
2

.7おそらく明確になる可能性がありますが、とを許可することで得られることはあまりないと思います7.コードは、機械だけでなく人間にも読み取られるように設計されており、リテラルの両端にある小数点は、途中よりも誤って見逃してしまう可能性がはるかに高くなります。

いつでも、保存されたバイトよりも読みやすさを重視します。

于 2011-10-03T23:34:50.823 に答える