我正在計算lambda Term的正常形式。我也有解決方案,所以我知道我的步驟直到「結束」是正確的。 給定的期限是 (\a.\b.(\x.a b x)(\y. b y x) a) (\f. f f)g
和該normalform是 g g (\y. g y x)(\f. f f)
我也得到了這一點,但後來我繼續,我不明白爲什麼這是最後期限。我繼續 g g g (\f. f f) x
然後
目前我正在爲我的考試做準備,這是我從來沒有真正理解的關於Haskell的內容。 類型規則如下 「UND」 手段 「和」 德語。 所以給定功能 f :: ([a] -> b) -> a -> [b]
g :: c -> Int -> c
現在我必須使用上述類型的規則來確定類型(f g)。有人能解釋我如何在這一點上進行?
fac n = if n < 2 then 1 else n * fac (n-1)
main = do
putStrLn "Enter a number: "
number <- getLine
print $ number >>= fac
我不知道如何編寫沒有if語句的遞歸階乘函數。我們的教授說了一些關於lambda微積分的話。