簡體   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