Скотти и Читатель Монада

Я пытаюсь добавить монаду Reader в свое приложение Scotty, чтобы иметь единый корневой путь для внутреннего расширения URL. Кажется, я не могу понять, как Скотти справляется с трансформацией монады - обычно я просто вижу что-то вроде runTransformerT ..., но scottyT имеет много внутренней сантехники, так что результат на самом деле просто MonadIO n => n () (вынуждены IO () если используется в main функция, как я здесь).

Вот мой код до сих пор:

main :: IO ()
main = scottyT 3000
  (\x -> runReaderT x "foo.com")
  id $ do
    root <- lift ask
    get "/" $
      text root

И ошибка, которую я получаю:

src/Main.hs:16:21:
    Couldn't match type ‘IO’ with ‘ReaderT r0 IO’
    Expected type: ReaderT r0 IO a
      Actual type: IO a
    In the first argument of ‘runReaderT’, namely ‘x’
    In the expression: runReaderT x "foo.com"

Как мне использовать эту магию?

0 ответов

Другие вопросы по тегам