[英]Is the expression (_, 'b') in Normal Form? in Weak Head Normal Form?
不幸的是,作者在這些問題中做出了一個錯誤的決定,即使用_
字符。 正如@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.