[英]Debugging Haskell
我是函數編程的新手,我想調試一個遞歸函數,以了解為什么我得到特定的值作為返回值。 我該怎么做? 我在本網站以及在線上都找到了一些答案,但是我無法理解這樣做的想法。 任何幫助,將不勝感激。
recur = \a -> if a>100 then a-10 else recur (recur (a+11))
您可以執行此操作(使用Debug.Trace
):
import Debug.Trace (trace)
recur a | trace ("recur " ++ show a) False = undefined
recur a = if a>100 then a-10 else recur (recur (a+11))
每次調用函數recur
時,這都會產生輸出(或者,因為Haskell是惰性的,因此每次需要應用recur
的結果時)。
樣本輸出(以ghci為單位):
*Main> recur 99
recur 99
recur 110
recur 100
recur 111
recur 101
91
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.