[Haskell] нубский вопрос про возвращение значения оперделённого типа

sergdob

Из do-блока, т.е. через return.
Функция возвращает что-то вроде (Bool, [Type]).
Из do-блока делаю return (False,[]) - интерпретатор ghci ругается, что
Couldn't match expected type `Type' against inferred type `[a]'

PS Имена типов вымышленные.
Что можно сделать?

alfadred

Код функции в студию.

Dmitriy82

return навешивает монаду. Т.е. выражение "return x", где тип x - Т, будет иметь тип M T. Это то что ты хочешь? (есть подозрение, что ты do-блок и return используешь не к месту)

sergdob

Наверное. Прошёл этот момент через error, но неприятно :)

apl13

Че-нить типа return (False, [] :: [Type]) не сработает?

conv3rsje

Что можно сделать?
Привести хотя бы кусок кода :)
Ибо такие ошибки обычно возникают не из-за самой функции, а из-за ее использования где-то
Например, если у тя объявлена какая-то функция с операндом типа 'a' и ты его неявно как-нить используешь (правда, тогда бы он упоминал 'rigid variable', но хз какой кусок ошибки ты отрезал)
2
Если бы он накосячил с монадами, ошибка была бы несколько другого вида. Хотя и похожая.
Если мне не изменяет память, монадой не является (в отличии от []). Так что ругань другая должна была бы быть.
Другое дело, что почти наверняка они там не к месту :)

apl13

Кстати, что такое "оперделённый тип"? :ooo:

sergdob

ну, опердолили его, а спеллчекер прососал
Оставить комментарий
Имя или ник:
Комментарий: