#haskell #happstack
#haskell #happstack
Вопрос:
Почему я не могу сделать
z = x?
но я могу это сделать?
y s = x s
Я новичок в Haskell
Это то, что я пробовал в GHCi:
Prelude> import Happstack.Server
Prelude Happstack.Server> let x s = ok $ toResponse $ "Some string"
Prelude Happstack.Server> :t x
x :: FilterMonad Response m => t -> m Response
Prelude Happstack.Server> let y s = x s
Prelude Happstack.Server> :t y
y :: FilterMonad Response m => t -> m Response
Prelude Happstack.Server> let z = x
<interactive>:1:9:
No instance for (FilterMonad Response m0)
arising from a use of `x'
Ответ №1:
Похоже, это еще один случай ограничения мономорфизма.
Вы можете либо включить аргумент явно, т.е. y s = x s
включить явную подпись типа, либо запустить GHCi с -XNoMonomorphismRestriction
.
Комментарии:
1. Спасибо. Это работает =) Хотя я думаю, что пройдет несколько месяцев, прежде чем я пойму, что это значит, и что я отдаю, используя этот флаг.