Делаю подузел Есод и я получаю ошибку типа в какой-то шаблон Haskell-сгенерированного кода:Yesod's TH генерирует неправильный код?
Yesod\DataSource\Data.hs:19:1:
Couldn't match type `[Char]' with `Text'
Expected type:() -> ([Text], [(Text, Text)]) -> Maybe (Route DataSource)
Actual type:() -> ([[Char]], [(Text, Text)]) -> Maybe (Route DataSource)
In the first argument of `\ f_amMs x_amMt -> f_amMs() x_amMt ::
forall a_amMu.
(() -> ([Text], [(Text, Text)]) -> Maybe (Route a_amMu))
-> ([Text], [(Text, Text)]) -> Maybe (Route a_amMu)', namely
`helper_amMr'
In the expression:
\ f_amMs x_amMt -> f_amMs() x_amMt ::
forall a_amMu.
(() -> ([Text], [(Text, Text)]) -> Maybe (Route a_amMu))
-> ([Text], [(Text, Text)]) -> Maybe (Route a_amMu)
helper_amMr
Проблема ясна, но я не понимаю, почему это генерируя неправильный код.
Проблема возникает в этом TH вызов:
mkYesodSubData "DataSource" [parseRoutes|
/SubHomeR GET
/datasource DataSourceInputR POST GET
|]
В частности, это вызвано линии:
/datasource DataSourceInputR POST GET
Удаление этой линии устраняет проблему.
Я использую Stackage LTS 1.15:
remote-repo: stackage-lts-1.15:http://www.stackage.org/snapshot/lts-1.15
И я внутри Кабал песочнице.
Вот соответствующие файлы: https://gist.github.com/BeerendLauwers/774cc432c3ada5b597e1
Любая идея?
Если вы уверены, что это ошибка в Yesod, попробуйте создать минимальный пример и опубликуйте проблему на [github] (https://github.com/yesodweb/yesod/issues). – Zeta