簡體   English   中英

調試Haskell

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM