Haskell 是的,输入可以';t匹配';App&x27;与';Auth';
我想写一份定制的YesSOD登记表。我遇到的问题是,当它进入fvInput时,它似乎在使用App而不是Auth。我不太确定这应该如何处理,我似乎找不到它的术语。我尝试过在表单中以各种方式提升,我只能让它抛出不同的错误。此外,引发此错误的唯一时间是如果我有fvInput行,但如果我删除该行,则不会引发任何错误,并且它可以正确编译 代码: 提前感谢您的帮助Haskell 是的,输入可以';t匹配';App&x27;与';Auth';,haskell,yesod,yesod-forms,Haskell,Yesod,Yesod Forms,我想写一份定制的YesSOD登记表。我遇到的问题是,当它进入fvInput时,它似乎在使用App而不是Auth。我不太确定这应该如何处理,我似乎找不到它的术语。我尝试过在表单中以各种方式提升,我只能让它抛出不同的错误。此外,引发此错误的唯一时间是如果我有fvInput行,但如果我删除该行,则不会引发任何错误,并且它可以正确编译 代码: 提前感谢您的帮助 编辑 mreq之前的提升错误: Foundation.hs:166:49: Couldn't match type ‘HandlerT
- 编辑
Foundation.hs:166:49:
Couldn't match type ‘HandlerT Auth (HandlerT App IO)’
with ‘transformers-0.4.2.0:Control.Monad.Trans.RWS.Lazy.RWST
(Maybe (Env, FileEnv), HandlerSite m0, [Lang]) Enctype Ints m0’
Expected type: HandlerT
Auth (HandlerT App IO) (FormResult Text, FieldView App)
Actual type: MForm m0 (FormResult Text, FieldView App)
In the second argument of ‘($)’, namely ‘mreq textField "" Nothing’
In a stmt of a 'do' block:
(emailRes, emailView) <- lift $ mreq textField "" Nothing
Foundation.hs:166:49:
无法匹配类型“HandlerT Auth(HandlerT应用IO)”
使用“transformers-0.4.2.0:Control.Monad.Trans.RWS.Lazy.RWST”
(可能是(Env,FileEnv),HandlerSite m0,[Lang])Enctype Ints m0'
预期类型:HandlerT
认证(HandlerT应用程序IO)(FormResult文本,FieldView应用程序)
实际类型:MForm m0(FormResult文本,FieldView应用程序)
在“($)”的第二个参数中,即“mreq textField”中为“Nothing”
在“do”块的stmt中:
(emailRes,emailView)您返回的小部件
类型实际上是:
WidgetT App IO ()
因此,小部件
(仅位于应用程序
)和电子邮件视图
(位于提升的HandlerT Auth(HandlerT App IO)
monad)之间存在不匹配
要解决这个问题:
将您键入的签名更改为registrationForm::Html->MForm(HandlerT应用程序IO)(FormResult用户表单,小部件)
在使用站点,您很可能需要使用lift
,但是在您已经为表单调用了相应的run
函数之后
我曾经试过。我认为这是错误的,因为它抛出了另一个错误。我将更新上面的帖子,添加lift的另一个错误。谢谢你的帮助!我错了,电梯坏了。我会更新答案的,就是这样。非常感谢。
Foundation.hs:166:49:
Couldn't match type ‘HandlerT Auth (HandlerT App IO)’
with ‘transformers-0.4.2.0:Control.Monad.Trans.RWS.Lazy.RWST
(Maybe (Env, FileEnv), HandlerSite m0, [Lang]) Enctype Ints m0’
Expected type: HandlerT
Auth (HandlerT App IO) (FormResult Text, FieldView App)
Actual type: MForm m0 (FormResult Text, FieldView App)
In the second argument of ‘($)’, namely ‘mreq textField "" Nothing’
In a stmt of a 'do' block:
(emailRes, emailView) <- lift $ mreq textField "" Nothing
WidgetT App IO ()