Haskell:如何定义严格的元组

时间:2012-06-19 17:15:09

标签: haskell lazy-evaluation

假设我有以下内容:

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)

基本上我想制作一对的严格版本,然后我可以将其传递给一对函数,该函数需要一对,可能需要通过包装器gf的具体实现只是一个例子,解决方案不应该依赖它。关键是我无法更改f,我只能更改g

1 个答案:

答案 0 :(得分:7)

怎么样

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