【问题标题】:How is sequence syntactic sugar ([1..6]) translated into actual list syntax ( 1:2:3...6 )?序列语法糖 ([1..6]) 如何转换为实际的列表语法 ( 1:2:3...6 )?
【发布时间】:2013-07-26 04:41:44
【问题描述】:

Haskell 如何将[] 翻译成列表定义?他们是重视构造函数还是什么?他们是新人吗?有没有办法定义 outfix 语法,而不是中缀语法?

【问题讨论】:

    标签: list haskell syntax enumeration syntactic-sugar


    【解决方案1】:

    此语法在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:[]
    • @tel: 为了完整起见,[1,2,3][1..3] 不一定具有相同的值。这取决于它的类型。它可能是以一种奇怪的方式实现Enum 的类型的列表。
    • 也可能是类型错误,因为[1,2,3] 的主要类型是Num a => [a],而[1..3] 的主要类型是(Num a, Enum a) => [a]
    猜你喜欢
    • 2017-03-19
    • 2020-03-31
    • 2020-07-29
    • 2011-02-11
    • 1970-01-01
    • 2013-04-29
    • 1970-01-01
    • 2011-09-08
    • 2015-08-29
    相关资源
    最近更新 更多