【发布时间】:2013-07-26 04:41:44
【问题描述】:
Haskell 如何将[ 和] 翻译成列表定义?他们是重视构造函数还是什么?他们是新人吗?有没有办法定义 outfix 语法,而不是中缀语法?
【问题讨论】:
标签: list haskell syntax enumeration syntactic-sugar
Haskell 如何将[ 和] 翻译成列表定义?他们是重视构造函数还是什么?他们是新人吗?有没有办法定义 outfix 语法,而不是中缀语法?
【问题讨论】:
标签: list haskell syntax enumeration syntactic-sugar
此语法在Report 中定义,特别是在section 3.10 中。 [1..6] 被定义为表示enumFromTo 1 6。你不能自己定义这样的语法。
【讨论】:
[1, 2, 3] 和[1..3] 具有相同的值,但以非常不同的方式到达那里。 [1, 2, 3] 去糖(直接!)到1:2:3:[] 而[1..3] 去糖到enumFromTo 1 3 然后评估到1:2:3:[]。
[1,2,3] 和 [1..3] 不一定具有相同的值。这取决于它的类型。它可能是以一种奇怪的方式实现Enum 的类型的列表。
[1,2,3] 的主要类型是Num a => [a],而[1..3] 的主要类型是(Num a, Enum a) => [a]。