У меня есть два значения, t1
и t2
, типа Either String Type
. Значение Left
используется для обработки ошибок. Эти значения используются в функции, которая возвращает Either String Type
.
Я хочу проверить, являются ли оба t1
и t2
Справа
-значения и удовлетворяют p :: Type -> Bool
. Если они это сделают, я хочу вернуть Right (тип внутри t1)
. Если оба t1
и t2
имеют Right
-значения, но не удовлетворяют p
, я хочу вернуть Left someString
. Если одно из t1
или t2
является значением Left
, я просто хочу передать это значение.
Как я могу сделать это элегантным способом ? У меня есть предчувствие, что использование Either в качестве монады - правильное решение, но я не знаю, как это сделать.