繁体   English   中英

表达式(_,'b')是否为标准格式? 弱头范式?

[英]Is the expression (_, 'b') in Normal Form? in Weak Head Normal Form?

通过Haskell编程书籍中的练习,我不确定答案如何,并且想检查一下我的理解。

表达式是: (_, 'b')

是正常形式,弱头正常形式还是两者都不是?


这是书中列出的问题(#7)的屏幕截图。

在此处输入图片说明

不幸的是,作者在这些问题中做出了一个错误的决定,即使用_字符。 正如@Alec所指出的那样,代码字符串(_,'b')不是有效的Haskell表达式(因为_是只能在模式中出现的保留标识符),因此询问(_,'b')是否在正常形态(NF)或弱头正常形态(WHNF)有点像询问大象是NF还是WHNF。 这真的没有道理。

如果问题改为询问(x, 'b') ,那将是一个更好的问题。 这是有效的Haskell表达式。 我们可以说它在WHNF中是因为它的“头”(表达式的最外面的部分)是数据构造函数。 在这种情况下,是元组构造函数(,)具有特殊的语法,因此它比平时更不明显,但是请注意(x, 'b')可以重写(,) x 'b'从而显然,“ head”是数据构造函数(,) 但是,它不能在NF中,因为x尚未得到完全评估(即,尚未被其值替换,该值可能在其他地方给出)。

与此相反, (1, 'b')将是在两个WHNF(因为它的头是数据构造(,) 在NF因为该数据构造被完全应用到的参数和每个这些参数都得到了充分评价。

现在,我认为作者的意图_代表否则有效表达式中某些未指定,未评估的部分,因此他或她希望您推断( (_, 'b')在WHNF中(因为头部是数据构造函数(,) ),但不在NF中(因为存在一个未评估的部分_浮动)。 因此,“正确”的答案是“仅WHNF”。

有帮助吗?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM