Мне нужна функциональность, которая проверяет, возвращает ли мой метод сообщение об ошибке, тогда я хочу, чтобы мой тестовый пример завершился иначе. Мой метод подписиМожно ли использовать любую строку для ввода? haskell
append::NestedList a->NestedList a->Either String (NestedList a)
Поскольку мне нужно проверить возвращаемое значение этого метода я определяю новый метод
isError :: Either String (NestedList a)-> Bool
isError x=if (null x)
then False
else True
Здесь я хочу увидеть, если строка передается в IsError не равно нулю, что означает отказ. EИначе b означает, что я передаю либо a, либо b. Мне не нужно пропускать их обоих. Я не хочу ничего делать с NestedList, поэтому я не проверяю этот случай. Что в этом плохого?
Это не удается:
Couldn't match expected type `[a0]'
with actual type `Either String (NestedList a)'
In the first argument of `null', namely `x'
In the expression: (null x)
In the expression: if (null x) then False else True
Вероятно, лучше предложить [ 'Control.Monad.Trans.Either'] (http://haddocks.fpcomplete.com/fp/7.4.2/ 20130829-168/либо/Control-Monad-Trans-Either.html), так как 'Control.Monad.Error' не ограничивает свой тип' Left' классом 'Error'. –