Expected type: ErrorT String IO Integer
Actual type: IO (Either String Integer)
Я понятия не имею, где я ошибаюсь. В конце концов, эти типы изоморфны.
Конечно, когда я заменить мою подпись функции отПочему компилятор сердится на изоморфные типы?
ErrorT String IO Integer
в
IO (Either String Integer)
компилятор счастлив, но я не счастлив, потому что я запутался.
компилятор проверяет тип равенства, а не изоморфизм. В противном случае 'newtype' было бы совершенно бесполезно. Кроме того, я бы не хотел «case True of Left() -> 1; Right() -> 2', чтобы ввести проверку. – chi
компилятор и его жена ехали на работу сегодня, когда полицейский остановил их. «Ты знаешь, почему я тебя вытащил», - спрашивает полицейский. Компилятор «Нет офицера» отвечает. «Ты ехал без ремней безопасности». «Вы, должно быть, ошибаетесь, офицер, я его видел!» Они идут туда и обратно о том, был ли ремень безопасности включен в течение нескольких минут. Затем полицейский наклоняется и говорит женщине: «Был ли компилятор без ремня безопасности?» Женщина отвечает: «Офицер, после сорокалетнего брака с компилятором, я узнал одно. Никогда не спорь с ним, когда он пьян!» Компилятор получил билет. Вот почему он злится. – Spade