Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/8.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/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 Purescript,了解为什么找不到类型类实例_Haskell_Purescript - Fatal编程技术网

Haskell Purescript,了解为什么找不到类型类实例

Haskell Purescript,了解为什么找不到类型类实例,haskell,purescript,Haskell,Purescript,我正在尝试构建一个简单的Purescript应用程序,但我不明白为什么我总是遇到typeclass实例错误 具体地说,在我的组件中我定义了eval函数来操作我的查询代数。在这个过程中,我只是为了好玩而把一些东西记录到控制台上 type AppEffects eff = (HalogenEffects (console :: CONSOLE | eff)) data Query a = DoSomething a eval :: Query ~> H.ComponentDSL State

我正在尝试构建一个简单的Purescript应用程序,但我不明白为什么我总是遇到typeclass实例错误

具体地说,在我的
组件中
我定义了
eval
函数来操作我的查询代数。在这个过程中,我只是为了好玩而把一些东西记录到控制台上

type AppEffects eff = (HalogenEffects (console :: CONSOLE | eff))

data Query a = DoSomething a

eval :: Query ~> H.ComponentDSL State Query (Aff (AppEffects eff))
eval (DoSomething a) = do
    liftEff $ log "print me out!"
    -- do some stuff with the action
    pure next
当我运行此命令时,编译器会大叫:

No type class instance was found for

    Control.Monad.Eff.Class.MonadEff ( "console" :: CONSOLE         
                                     | t0                           
                                     )                              
                                     (Free                          
                                        (HalogenFP EventSource      
                                           { "someState" :: String  
                                           }                        
                                           Query                    
                                           (Aff                     
                                              ( "avar" :: AVAR      
                                              , "err" :: EXCEPTION  
                                              , "dom" :: DOM        
                                              , "console" :: CONSOLE
                                              | eff1                
                                              )                     
                                           )                        
                                        )                           
                                     )                              

The instance head contains unknown type variables. Consider adding a type annotation.
所以我指定了一种类型:

tryPrint :: Eff (console :: CONSOLE | eff) Unit
tryPrint = log "print me out!"

但是,编译器仍然告诉我需要为
MonadEff
typeclass实现一个实例。我真的不明白这个错误。有人能给我指出正确的方向吗?

没有
Free
MonadEff
实例,因此您不能在
ComponentDSL
中使用
liftEff
,因为它是
Free
的同义词


这在下一个卤素版本中发生了变化,
ComponentDSL
将有一个
MonadEff
实例。对于当前发布的版本(v0.12.0),解决方案是使用
fromEff
函数,这在
Free
中没有
MonadEff
实例,因此不能在
组件DSL
中使用
liftEff
,因为它是
Free
的同义词

这在下一个卤素版本中发生了变化,
ComponentDSL
将有一个
MonadEff
实例。对于当前发布的版本(v0.12.0),解决方案是使用
fromEff
函数,如中所述