gpt4 book ai didi

haskell - 需要灵活的实例吗?

转载 作者:行者123 更新时间:2023-12-04 10:04:22 26 4
gpt4 key购买 nike

我想将 Haskell 类型的 Convertible 实例写入其 C 表示

它看起来像这样:

instance Convertible Variable (IO (Ptr ())) where

现在 GHC 提示:
 Illegal instance declaration for `Convertible
Variable (IO (Ptr ()))'
(All instance types must be of the form (T a1 ... an)
where a1 ... an are *distinct type variables*,
and each type variable appears at most once in the instance head.
Use -XFlexibleInstances if you want to disable this.)
In the instance declaration for `Convertible Variable (IO (Ptr ()))'

如果您的实例声明中有自由类型,我认为需要灵活实例,但事实并非如此。添加正确的编译指示时,我可以编译它,但是谁能解释我为什么需要这个?

最佳答案

是的,您需要灵活的实例。没有它,你所有的 typeclass 实例都必须看起来像

instance Foo (Maybe a) where
instance Foo (IO a) where
instance Foo (Either a b) where

如果你想做 TypeConstructor a1 a2 a3 ... 以外的任何事情(并且 a 必须是类型变量)而不是您需要灵活的实例。但它是最常见的语言扩展之一,不要费力使用它。

关于haskell - 需要灵活的实例吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20145943/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com