Использование # с любым типом в PureScript
Мне нравится использовать #
для передачи значения через несколько функций, так как это делает код более читаемым:
1 # (n -> n * 2) # (n -> n + 1)
Однако я хотел бы сделать это с помощью Either
:
(Right 1) ??? (n -> n * 2) ??? (n -> n + 1)
Значение Right
должно быть распаковано для каждой функции, в то время как значение Left
должно просто передаваться без изменений. Другими словами:
(Right x) ??? f == Right f(x)
(Left x) ??? f == Left x
Есть ли уже оператор для этого?
1 ответ:
Вы ищете
<#>
, который является псевдонимом оператора для функтора mapFlipped. Экземпляр функтора дляEither
применяет функцию к содержимомуRight
, но оставляет значенияLeft
нетронутыми.