可以说我有以下内容:
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_strict
和g
:
g f x = ... f x ...
make_strict x = ...
以便:
g f x1 == undef
g f x2 == (0, 0)
基本上我想制作一个严格版本的一对,然后我可以将它传递给一个接受一对的函数,g
如果需要的话可能通过一个包装器。这里的具体实现f
只是一个例子,解决方案不应该依赖它。关键是我不能改变f
,我只能改变g
。