[英]Haskell Chart breaks stack build
尝试使用 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 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
我太缺乏经验,不知道如何解决这样的问题。 请指教。
你有一些选择来解决这个问题。 您正在尝试使用非详尽模式在“do”块中进行模式匹配。 为了做到这一点:
您可以禁用 MonadFailDesugaring 扩展。 在文件顶部添加 {-# LANGUAGE NoMonadFailDesugaring #-} 或使用标志 -XNoMonadFailDesugaring 进行编译。 但是此扩展不能在 GHC 8.8 或更高版本中停用。
您可以定义或派生 MonadFail 实例。
你可以使用 State monad。 如果 monad 转换器堆栈中较低的 monad 是 MonadFail 的实例,那么我们也可以使最高的 monad 成为 MonadFail 的实例。
停止并执行明确和详尽的模式匹配。
来源: http : //www.fyrbll.me/haskell/language-extensions/monad-fail-desugaring/processed.html
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.