Haskell图表中断堆栈构建
尝试使用图表学习Haskell。建筑中的包装破损,包括:Haskell图表中断堆栈构建,haskell,haskell-stack,haskell-chart,Haskell,Haskell Stack,Haskell Chart,尝试使用图表学习Haskell。建筑中的包装破损,包括: /private/var/folders/m2/qwhdrn_d46z99_3vxchdwn7r0000gn/T/stack5630/Chart-1.9/Graphics/Rendering/Chart/State.hs:102:3: error: • No instance for (Control.Monad.Fail.MonadFail Identity) arising from a do statemen
/private/var/folders/m2/qwhdrn_d46z99_3vxchdwn7r0000gn/T/stack5630/Chart-1.9/Graphics/Rendering/Chart/State.hs:102:3: error:
• No instance for (Control.Monad.Fail.MonadFail Identity)
arising from a do statement
with the failable pattern ‘(c : cs)’
• In a stmt of a 'do' block: (c : cs) <- use shapes
In the second argument of ‘($)’, namely
‘do (c : cs) <- use shapes
shapes .= cs
return c’
In the expression:
liftCState
$ do (c : cs) <- use shapes
shapes .= cs
return c
|
102 | (c:cs) <- use shapes
/private/var/folders/m2/qwhdrn_d46z99_3vxchdwn7r0000gn/T/stack5630/Chart-1.9/Graphics/Rendering/Chart/State.hs:102:3:错误:
•没有(Control.Monad.Fail.MonadFail标识)的实例
由do语句引起的
具有可故障模式(c:cs)'
•在“do”块的stmt中:(c:cs)您可以选择解决该问题。您正在尝试使用非穷举模式在“do”块中进行模式匹配。为此:
- 您可以禁用MonadFailDesugaring扩展。在文件顶部添加{-#LANGUAGE NoMonadFailDesugaring#-},或使用-XNoMonadFailDesugaring标志进行编译。但此扩展无法在GHC 8.8 ot之后的版本中停用
- 您可以定义或派生MonadFail实例
- 你可以用状态单子。如果monad transformer堆栈中较低的monad是MonadFail的实例,那么我们可以将最高的monad也作为MonadFail的实例
- 停止,并执行显式和详尽的模式匹配
来源:我不熟悉这个库,但我相当肯定,您可以通过在GHC中禁用MonadFailDesugaring
来消除这个错误(默认情况下,它从8.6.1开始一直处于启用状态)-请参阅@Robin Zigmond:但这是一种语言pragma,对吗?我可以从源文件显式禁用(或更改)pragma而不是更改库吗?在文件顶部,{-#LANGUAGE NoMonadFailDesugaring}@a Tayler:谢谢。不知怎的忽略了这一点。