我正在制作一个Yesod子网站,并在一些模板Haskell生成的代码中得到一个类型错误:
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问题很明显,但我不明白为什么它会生成错误的代码。
这一问题发生在这次电话会议上:
mkYesodSubData "DataSource" [parseRoutes|
/ SubHomeR GET
/datasource DataSourceInputR POST GET
|]具体而言,造成这种情况的原因如下:
/datasource DataSourceInputR POST GET删除此行将修复此问题。
我用的是堆叠LTS 1.15:
remote-repo: stackage-lts-1.15:http://www.stackage.org/snapshot/lts-1.15我在一个阴谋集团的沙箱里。
以下是相关文件:https://gist.github.com/BeerendLauwers/774cc432c3ada5b597e1
有什么想法吗?
发布于 2015-04-01 11:07:48
我认为生成的代码希望在源文件中启用OverloadedStrings扩展。试着添加
{-# LANGUAGE OverloadedStrings #-}插入模板Haskell代码(即Data.hs)的源文件顶部。
https://stackoverflow.com/questions/29389064
复制相似问题