在不使用if-else语句的情况下实现函数

时间:2018-11-30 21:58:20

标签: sml

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

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

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

编辑:正在寻找一种组合两种功能的方法,其中一种是'a -> 'a,而另一种是'a -> bool

1 个答案:

答案 0 :(得分:2)

如果出于某些奇怪的原因,您不想使用flex,则可以将模式匹配为true / false。例如。像这样:

if-else

但是正如enter image description here所述,如果您不是所要查找的内容,则可能需要改写您的问题并以更大的角度描述该问题。