來自Haskell,我正在讀伊德里斯關於懶惰(非嚴格性)的故事。我觸輪近期發行說明和found code類似於以下 myIf : (b : Bool) -> (t : Lazy a) -> (e : Lazy a) -> a
myIf True t e = t
myIf False t e = e
我寫了一個簡單的階乘函數來測試它 myFact : Int -> Int
myFact n
我的理解(I think)是Haskell的seq,將(一般)reduce它的第一個參數WHNF,看到這種行爲,因爲預計在GHCI: λ> let x = (trace "foo" Foo (trace "bar" Bar 100)) in seq x 0
foo
0
然而,儘管documentation for evaluate說,這也降低了它的參數到WHNF,它看起來像它實際上完全降低
這個問題haskell fold rose tree paths深入摺疊玫瑰樹到其路徑的代碼。我正在試驗無限的玫瑰樹,我發現所提供的解決方案不夠懶惰,無法在深度和廣度上無窮無盡的玫瑰樹上工作。 考慮玫瑰樹,如: data Rose a = Rose a [Rose a] deriving (Show, Functor)
這裏有一個有限的玫瑰樹: finiteTree = Rose "root"