我試圖理解為什么在 Haskell 中禁止 n k 模式。StackOverflow上的一篇著名文章給出了一個函式示例,如下所示:
f 0 = 0
f (n 5) = 5
Haskell 在匹配 f 1, f 2, f 3, f 4 時顯示錯誤。我不明白為什么 (-1) 不能與 n 匹配。首先,我認為整數只包含非負文字 (0,1,..),但 Haskell 對Int型別的定義包括負文字。
uj5u.com熱心網友回復:
為什么不能匹配-1?這就是 n k 模式的定義方式,大概是因為這在當時看起來是個好主意。對自然數使用歸納法是很自然的,那么為什么不定義我們很酷的 n k 模式來為自然數作業呢?來自Haskell 的報告:
如果 x >= k,則將 n k 模式(其中 n 是變數,k 是正整數文字)與值 v 匹配成功,導致 n 系結到 x - k,否則失敗。同樣,根據模式的型別,函式 >= 和 - 被多載。如果比較發散,則匹配發散。
您發現這令人驚訝的事實可能是洗掉 n k 模式的原因之一。另一個是不需要它們:您可以輕松地將任何 n k 模式轉換為不使用此功能的模式。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/399706.html
上一篇:Flask登錄與Apache快取
