0

我想实现一个函数,f g a当它f g是 lambda 函数并且a是一个参数时作为输入。该功能应执行以下操作:

fun foo f g a = if (g a) then (f a) else a;
> val foo = fn : ('a -> 'a) -> ('a -> bool) -> 'a -> 'a

是否可以以某种方式替换if-elseandalso,orelse或其他方法?我想在不使用if-else语句的情况下实现一个函数。

编辑:寻找一种结合两个功能的方法,其中'a -> 'a一个是'a -> bool.

4

1 回答 1

2

如果出于某种奇怪的原因您不想使用,则if-else可以将模式匹配为真/假。比如这样:

fun bar f g a = case (g a) of
                true => (f a)
                | false => a;

fun bari f g a = (fn true => f a | false => a)(g a);

但是正如Simon Shine已经提到的那样,如果这不是您想要的,您可能需要重新表述您的问题并从更大的角度描述问题。

于 2018-12-01T19:44:36.710 回答