Я хотел бы помочь в написании этого в стиле pointfree.pointfree style для условной функции
Для контекста: функция принимает массив из всех типов и возвращает тип задачи. Тип задачи отклоняется любым из типов, которые имеют левый набор. Тип задачи разрешен, если нет ни одного типа с левым набором. Это используется таким образом:
Async.parallel(xs).
map(eachToEither).
chain(rejectAnyLefts).
fork(error, success)
Где на практике я хотел бы добавить еще одну цепь (только до развилки), чтобы выполнить perist. Но сначала я хочу убедиться, что мой код является идиматическим, насколько это возможно. Функция под рукой - это rejectAnyLefts, которые я хотел бы написать pointfree, но есть несколько вещей, бросающих меня в цикл.
- КРП
- необходимость сохранения значения leftObjs для использования в IF и потенциально возвращаемое значение
const rejectAnyLefts = function(eitherArray){
const leftObjs = r.filter(r.propEq("isLeft", true), eitherArray)
const isEmpty = r.propEq('length', 0)
return (isEmpty(leftObjs)) ?
Task.rejected(leftObjs) :
Task.of(eitherArray)
}
Ahhh - Я рассматривал функцию перегородки, но не мог думать о остатке кода (еще новичок в rmada). Я рассматривал что-то вроде IF в excel - это именно то, что есть. Мысленно я был не слишком далеко, спасибо за помощь. Subjectivley Я не думаю, что это более читаемо, чем «заостренная» реализация. Но для меня это был скорее академический вопрос, и я чувствую, что мое понимание было продвинуто вперед, – akaphenom