Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.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 YesodAuthEmail无法推断站点0的m~Handlers_Haskell_Authorization_Yesod_Type Families - Fatal编程技术网

Haskell YesodAuthEmail无法推断站点0的m~Handlers

Haskell YesodAuthEmail无法推断站点0的m~Handlers,haskell,authorization,yesod,type-families,Haskell,Authorization,Yesod,Type Families,我想补充一点 instance YesodAuthEmail App 到Yesod Postgresscaffolding(Yesod版本1.6)并陷入编译错误 有关守则如下: instance YesodAuth App where type AuthId App = UserId .... authPlugins :: App -> [AuthPlugin App] authPlugins app = [authOpenId Claimed

我想补充一点

instance YesodAuthEmail App 
Yesod Postgres
scaffolding(Yesod版本1.6)并陷入编译错误

有关守则如下:

instance YesodAuth App where
     type AuthId App = UserId
     ....
     authPlugins :: App -> [AuthPlugin App]
     authPlugins app = [authOpenId Claimed []] ++ extraAuthPlugins
         where extraAuthPlugins = [ authEmail ]

instance YesodAuthEmail App where
    type AuthEmailId App = UserId

    afterPasswordRoute _ = HomeR

    addUnverified email verkey =
        runDB $ insert $ User email Nothing 
我收到的错误是:


/home/justin/code/yesodemail/src/Foundation.hs:273:11:错误:
•无法从上下文MonadAuthHandler应用程序m推断:m~HandlerFor site0 受以下类型签名的约束: addUnverified::yessod.Auth.Email.Email->VerKey->AuthHandler应用程序(AuthEmailId应用程序) ..
预期类型:m(AuthEmailId应用程序) 实际类型:site0的Handler0(关键用户)

根据类型,

getEmail :: AuthEmailId site -> AuthHandler site (Maybe Email) 
type MonadAuthHandler master m = (MonadHandler m, YesodAuth master, master ~ HandlerSite m, Auth ~ SubHandlerSite m, MonadUnliftIO m)
type AuthHandler master a = forall m. MonadAuthHandler master m => m a
我本以为这会被编译。我在误解什么

<> P.S.我试着把所有相关的东西都包括进去,但是完整的基础。HS是在

< p>的类型是:

要在
AuthHandler
中调用它,需要将其提升到
HandlerFor

如果我没有弄错的话,这就是来自
MonadHandler
的方法的用途

如果使用它编写
runDB
调用,它应该可以工作:

addUnverified email verkey =
    liftHandler . runDB $ insert $ User email Nothing
我找到了你问题的详细答案

addUnverified email verkey =
    liftHandler . runDB $ insert $ User email Nothing