Использование # с любым типом в 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 2

1 ответ:

Вы ищете <#>, который является псевдонимом оператора для функтора mapFlipped. Экземпляр функтора для Either применяет функцию к содержимому Right, но оставляет значения Left нетронутыми.