Class 函数可以是Haskell中类的实例吗
不起作用,而且Class 函数可以是Haskell中类的实例吗,class,function,haskell,types,instance,Class,Function,Haskell,Types,Instance,不起作用,而且 class A a instance A (Int -> Float) 工作 如果Haskell中的函数被视为第一类,而Int->float无疑是一种类型,尽管它不是一种*具体类型,为什么函数不能是类的实例呢 class B b instance B Int 是的,函数类型在Haskell中不是很特殊: {-# LANGUAGE FlexibleInstances #-} module TestFlexibleInstances where class A a i
class A a
instance A (Int -> Float)
工作
如果Haskell中的函数被视为第一类,而Int->float无疑是一种类型,尽管它不是一种*具体类型,为什么函数不能是类的实例呢
class B b
instance B Int
是的,函数类型在Haskell中不是很特殊:
{-# LANGUAGE FlexibleInstances #-}
module TestFlexibleInstances where
class A a
instance A (Int -> Float)
正如shk在其回答中指出的,如果您想修复域或范围的类型,您需要像FlexibleInstances这样的扩展–但这与函数类型无关,并且对于其他类型构造函数应用程序(如Maybe Int)也是必需的。它确实有效,我怎么知道一些问题是由于缺少语言扩展造成的?@user1926094 GHC在尝试实例Foo Int->Float时会给出错误消息,其中。。。应该在不太旧的GHCs中包含FlexibleInstances的建议。如果您想禁用它,我确实发现错误消息包含Use-XFlexibleInstances,但我只在shell中编译时将其作为选项。现在我意识到它也是一种语言扩展
module Test where
instance Show (a -> b) where
show _ = "(function)"