如何将序列句法糖([1..6])翻译成实际的列表语法(1:2:3 ... 6)?

Ath*_*ark 6 syntax haskell enumeration list syntactic-sugar

Haskell如何翻译[]进入列表定义?他们是否重视构造者或其他什么?他们是新类型吗?有没有办法定义一个outfix语法,而不是一个中缀语法?

sha*_*haf 14

此语法在报告中定义,特别是在3.10节中.[1..6]定义为enumFromTo 1 6.您无法自己定义语法.

  • 要强调---`[1,2,3]`和`[1..3]`具有相同的*值*,但以非常不同的方式到达那里.`[1,2,3]`desugars(直接!)到`1:2:3:[]`而``[1..3]`desugars到`enumFromTo 1 3`然后*评估*为'1: 2:3:[]`. (13认同)
  • @tel:并且为了完整性,`[1,2,3]`和`[1..3]`不一定具有相同的值.这取决于它的类型.它可能是以奇怪的方式实现"Enum"的类型列表. (12认同)
  • 一个也可能是一个类型错误,因为`[1,2,3]`的主要类型是`Num a => [a]`,而`[1..3]`的主要类型是`(Num a,枚举a)=> [a]`. (2认同)