一半時這裏...無可辯駁/懶人模式演習在Haskell維基
https://en.wikibooks.org/wiki/Haskell/Laziness
...是一個鍛鍊問變化的影響,以替代實現head
功能的使用無可辯駁圖案。它提供的head'
如下的定義,並指出這將總是返回undefined
由於第一方程式的無可辯駁的匹配:
head' :: [a] -> a
head' ~[] = undefined
head' ~(x:xs) = x
然後問:
- 爲什麼不會改變的順序方程
head'
有幫助嗎? - 如果第一個公式改變爲使用普通的可辯別模式, 的行爲
head'
仍然不同於head
?如果 那麼,如何?
在GHC 7.8.4似乎改變爲了「幫助」至少讓該功能表現得像的head
常規部分版本,儘管在空列表情況下,不同的異常程度。對第二個問題的答案在我看來似乎是「不」,但考慮到「如果是,如何」增編,感覺我也必須在這裏錯過一些東西。任何人都可以啓發我嗎?不幸的是,頁面上的解決方案鏈接不包括此練習。
隨着遲來的感謝您有用的答案和道歉對任何其他違反禮儀兩年後回到這裏,我一直在回顧最後一部分的答案,並且無法找到任何方式從partialId和partialId中獲得不同的結果,以獲得我能想到的任何輸入。你能指出我的不同嗎? (我清楚地看到兩個konst變體之間的區別。) –