3

Haskell 98 报告中说

浮动文字必须包含小数点前后的数字;这确保了小数点不会被误认为是点字符的另一种用法。

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

(澄清动机:我知道很多人不需要9.0写数字或0.7一直写数字,但我不能很好地与自己交朋友。我同意而不是更紧凑,但没有更好,但是写出来的尾随零对我来说是错误的,除非它们表达的某个数量精确到十分之一,这在 Haskell 让我写 - 数字的情况下很少见。) 0.7.79.0


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


没有表达式要求整数文字直接位于 a 旁边.,没有空格?

4

4 回答 4

5

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

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

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

于 2011-10-03T22:37:15.040 回答
3

最突出的用法之一(.)是函数组合。因此,haskell 编译器解释a . 1了用数字组合函数 a 并且不知道该怎么做;类似地,反过来。的其他用法(.)可以在这里找到。

我不知道.7vs.的其他问题。0.7

于 2011-10-03T22:35:12.247 回答
3

允许'9'似乎并没有太大问题。和“.7”。我认为现在的设计更多的是反映了 Haskell 原设计师的想法。

于 2011-10-03T22:58:37.140 回答
2

虽然它可能会被消除歧义,但我认为允许.77.. 代码既可以供阅读,也可以供机器阅读,在文字的任一端意外遗漏小数点比在中间容易得多。

我会在任何一天对保存的字节进行额外的可读性。

于 2011-10-03T23:34:50.823 回答