Реализация функции без использования операторов if-else - PullRequest
0 голосов
/ 01 декабря 2018

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

1 Ответ

0 голосов
/ 01 декабря 2018

, если по какой-то странной причине вы не хотите использовать if-else, вы можете сопоставить соответствие true / false.Например:

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);

Но, как уже упоминалось Саймон Шайн , вы можете перефразировать свой вопрос и описать проблему в более широкой картине, если это не то, что вы ищете.

...