为什么 Haskell 数字文字需要以数字开头和结尾?

lef*_*out 3 floating-point haskell literals rational-numbers

Haskell 98 报告中

浮动文字必须包含小数点前后的数字;这可确保小数点不会被误认为是点字符的其他用途。

这可能还有什么用处?我无法想象任何这样的合法表达。

(为了澄清动机:我知道很多人都喜欢9.00.7一直在不需要的情况下写数字,但我不能完全与自己交朋友。我可以0.7选择更紧凑但其他更好的.7,但是重写的尾随零对我来说是错误的,除非它们表达的某个数量精确到十分之一,这在 Haskell 让我写9.0数字的场合很少见。)


我忘了在没有空格的情况下编写函数组合是合法的!这当然是一种可能性,尽管可以通过贪婪地解析浮动文字来避免这个问题,例如replicate 3 . pred$8? ((replicate 3) . pred) 8但是replicate 3.pred$8(replicate 3.0 pred)8.


有没有其中一个整数文字表达需要直接旁边站立.,没有空白?

Rot*_*sor 5

其他用途的一个示例是点运算符(或以点开头或结尾的任何其他运算符):replicate 3.pred$8.

另一种可能的用途是在范围表达式中:[1..10].

此外,您可以(几乎)总是写9而不是9.0,从而.完全避免需要。