我正在做耶索德子網站和我在一些模板哈斯克爾生成的代碼得到一個錯誤類型:Yesod的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
任何想法?
如果您確信它是在耶索德一個bug,嘗試創建一個最小的例子,在[github上(https://github.com/yesodweb/yesod/issues)發佈的問題。 – Zeta 2015-04-01 11:06:17