У меня есть функция, которая принимает некоторый аргумент и вызывает другую функцию, которая возвращает список в форме [a_1, a_2, ..., a_n].
Я пытаюсь вызвать предикатp для каждого элемента в списке и возвращает элемент, для которого p (a_i) = True.
Если нет, то я буду рекурсивно повторять алгоритм для всех a_i.
Структураследующим образом:
f :: t -> t
f = (g t) --this is a list
(p ?) -- p is a predicate on each element
Я хочу вызвать этот предикат p для каждого элемента в списке, а затем вернуть элемент, если предикат имеет значение true.
Если предикат не выполняется для всех элементовзатем я рекурсивно вызываю f для каждого элемента в списке, который, как я понимаю, даст мне кратное «t», которое я знаю, как объединить в один t, чтобы соответствовать моей подписи.
Я нашел это:
Как выйти из цикла итерации при выполнении условия?
Но структура условия выглядит иначе, чем то, что я пытаюсь сделать.
Может ли кто-нибудь указать мне правильное направление?