Скотти и Читатель Монада
Я пытаюсь добавить монаду 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"
Как мне использовать эту магию?