這是我的程式:
modify :: Integer -> Integer
modify a = a 100
x = x where modify(x) = 101
在 ghci 中,編譯成功,但是當我嘗試列印 x 時,終端卡住了。在 Haskell 中是否無法從函式輸出中找到輸入?
uj5u.com熱心網友回復:
x = x where modify(x) = 101
是有效的語法,但等價于
x = x where f y = 101
wherex = x是遞回定義,會陷入死回圈(或產生<<loop>>例外),f y = 101是區域函式的定義,與modify別處定義的函式完全無關。
如果您打開警告,您應該會收到一條訊息,指出“警告:modify外部系結陰影的本地定義”,指向問題。
此外,沒有辦法像您想要的那樣反轉函式。首先,該函式可能不是單射的。其次,即使是這樣,也沒有簡單的方法來反轉任意函式。我們可以嘗試所有可能的輸入,但這會非常低效。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/517125.html
上一篇:元組上的類似序列
下一篇:Coq型別類方法的默認實作
