Я хотел бы реализовать функцию, которая получает в качестве ввода f g a
, когда 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
.