2012-06-19 40 views
2

可以說我有以下幾點:哈斯克爾:如何定義嚴格的元組

f (a, b) = if a == 0 then (0, 0) else (a * b, a/b) 

x1 = make_strict (0, undefined) 
x2 = (0, undefined) 

g f :: (b -> b) -> a -> a 

如何界定make_strictg

g f x = ... f x ... 
make_strict x = ... 

這樣:

g f x1 == undef 
g f x2 == (0, 0) 

基本上我想要製作一個嚴格的版本,然後我可以將它傳遞給一個需要一對的函數,可能通過h必要時包裝g。這裏的f的具體實現只是一個例子,解決方案不應該依賴它。重點是我不能改變f,我只能改變g

回答

7

如何

makeStrict (a, b) = seq a (seq b (a, b)) 
+0

謝謝你,雖然你的答案使我意識到,也許這個問題是不是一個好一個,錯過了什麼,我試圖做的地步。 – Clinton