Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Haskell 是的,输入可以';t匹配';App&x27;与';Auth';_Haskell_Yesod_Yesod Forms - Fatal编程技术网

Haskell 是的,输入可以';t匹配';App&x27;与';Auth';

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

我想写一份定制的YesSOD登记表。我遇到的问题是,当它进入fvInput时,它似乎在使用App而不是Auth。我不太确定这应该如何处理,我似乎找不到它的术语。我尝试过在表单中以各种方式提升,我只能让它抛出不同的错误。此外,引发此错误的唯一时间是如果我有fvInput行,但如果我删除该行,则不会引发任何错误,并且它可以正确编译

代码:

提前感谢您的帮助

  • 编辑
mreq之前的提升错误:

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 ()