我正在修改即將推出的Haskell考試,但我不明白過去的論文中的其中一個問題。谷歌變成了nothing usefulHaskell「源代碼減少」
fst(x, y) = x
square i = i * i
我)來源減少,使用Haskells懶惰的評價,表達:
fst(square(3+4), square 8)
II)來源減少,採用嚴格的評價,同樣表達
三)國家懶惰評估的一個優點和嚴格評估的一個優點
我不明白的是是源減少?
我正在修改即將推出的Haskell考試,但我不明白過去的論文中的其中一個問題。谷歌變成了nothing usefulHaskell「源代碼減少」
fst(x, y) = x
square i = i * i
我)來源減少,使用Haskells懶惰的評價,表達:
fst(square(3+4), square 8)
II)來源減少,採用嚴格的評價,同樣表達
三)國家懶惰評估的一個優點和嚴格評估的一個優點
我不明白的是是源減少?
約簡是lambda演算中的一個術語,它涉及用等價項替換一個項的語義保留轉換。對於你給的例子中,最重要的一種削減是通過它的定義名稱的
貝塔縮減是lambda微積分中的基本規則,並且像Haskell這樣的純粹,懶惰的語言,它總是保留語義。所述β-規則是一個表示:
(\x. e) m
可以通過e
與m
爲x
取代代替。 (取代必須避免在m
「捕獲」的x
免費實例。)
這很可能是你的老師希望你能削減如下組合:
請注意,您經常有一個選項關於哪個應用程序要減少;例如,在您給出的術語中,有兩個應用程序square
和fst
之一可以用這種方式減少。 (+的應用程序也可以減少,但減少涉及常量,需要不同的規則。)
從我看到你的老師希望你一再降低每學期,直到達到正常形態的問題和你的導師希望你能證明你對不同減少策略的理解。 「源減少」中的「源」一詞是多餘的;減少意味着在某些語言中操作源詞語。我會措辭的問題如下:
使用對應於Haskell的惰性計算降價策略,降低了下面的表達式弱頭部正常形態。顯示減少順序中的每個步驟。
使用與嚴格功能語言中的評估相對應的縮減策略,將以下表達式縮小爲標準形式。
我可能會選擇不那麼靦腆,只是命名削減戰略:通話按需要減少戰略和呼叫按價值減少的策略。
從問題的結構,它可能僅僅意味着「手工計算表達式」,例如
head (map primeTest (enumFromTo 1000 2000))
在偷懶
(評估僅在需要時)的評價,
head (map primeTest (enumFromTo 1000 2000))
= head (map primeTest (1000 : enumFromTo 1001 2000))
= head (primeTest 1000 : map primeTest (enumFromTo 1001 2000))
= primeTest 1000
= False
嚴格(評估家居第一)評估
head (map primeTest (enumFromTo 1000 2000))
= head (map primeTest (1000 : enumFromTo 1001 2000))
= ...
= head (map primeTest [1000, 1001, ..., 2000])
= head (primeTest 1000 : map primeTest [1001, 1002, ..., 2000])
= head (False : map primeTest [1001, 1002, ..., 2000])
= ...
= head [False, False, ..., False]
= False
唯一相關的地方,我能找到的是http://www.cs.bham.ac.uk/internal/modules/2009/11582.html其中「源減少「被列爲」編程技術「。 (O_O)
我希望他只是說在論文中「評估這個」會更有意義! – Martin 2010-05-22 11:48:24
@你發現的筆記:我在伯明翰學習CS,那些是我拿的模塊的筆記。我真的很愛講師,他們只是做點事情。 – Martin 2010-05-22 12:01:46