在The Haskell 98 Report它說,爲什麼Haskell數字文字需要以數字開頭和結尾?
浮動文字都必須前和小數點後包含數字;這確保小數點不能被誤認爲是另一個點號字符的用法。
這可能是什麼其他用途?我無法想象任何這樣的法律表達。
(澄清的動機:我知道有很多人寫的像9.0
或0.7
所有的時間數不需要,但我不能完全與此交好自己我行與0.7
,而那麼更緊湊,但否則不會更好.7
,但被覆寫的尾隨零感覺我錯了,除非他們表達某些數量精確到十分之一,這在很少的情況下,在Haskell使我寫9.0
-數字的情況很少。)
我忘了編寫沒有圍繞空白的函數組合是合法的!這當然是一種可能性,但可以通過貪婪地解析浮動文字來避免此問題,例如
replicate 3 . pred$8
≡
((replicate 3) . pred) 8
但
replicate 3.pred$8
≡
(replicate 3.0 pred)8
。
沒有表達式,其中整數文字是要求直接站在.
旁邊,沒有空格?
您自己給出了最好的例子,爲什麼數字文字不應該以'。'開頭或以'。'開頭。你提出的「解決方案」對我來說聽起來很糟糕 - 至少它破壞了正交性(也就是說,爲什麼我可以寫'abs 3 + b',而不是'max 3.b',我的意思是'(。)(max 3)b ' – Ingo
@Ingo爲記錄,這個例子取自Rotors的答案 - 至於正交性:你不能'最大Ab'(用'A'作爲'Ord'實例的數據構造函數,這樣'( )(最大A)b'是合法的) – leftaroundabout