Вопрос новичка по синтаксису и типу подписи в Haskell / HappStack - PullRequest
4 голосов
/ 15 мая 2011

Почему я не могу сделать

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 Ответ

5 голосов
/ 15 мая 2011

Похоже на еще один случай ограничения мономорфизма .

Вы можете либо явно включить аргумент, то есть y s = x s, включить явную сигнатуру типа, либо запустить GHCi с -XNoMonomorphismRestriction.

...