class A a
instance A (Int -> Float)
不作品和能功能是類的實例在Haskell
class B b
instance B Int
工作 如果在Haskell函數被取爲第一類和(中間體 - >浮動)是undoubtly一類型,雖然它不是(*)的具體類型,爲什麼不能職能是類實例
class A a
instance A (Int -> Float)
不作品和能功能是類的實例在Haskell
class B b
instance B Int
工作 如果在Haskell函數被取爲第一類和(中間體 - >浮動)是undoubtly一類型,雖然它不是(*)的具體類型,爲什麼不能職能是類實例
隨着FlexibleInstances擴展,你可以這樣做:
{-# LANGUAGE FlexibleInstances #-}
module TestFlexibleInstances where
class A a
instance A (Int -> Float)
是,函數類型是不是很特別哈斯克爾:
module Test where
instance Show (a -> b) where
show _ = "(function)"
正如在他的回答中指出新鴻基,如果你要修復的域或範圍的類型,您將需要一個擴展如FlexibleInstances - 但與函數類型無關,並且對於其他類型的構造函數應用程序(如Maybe Int
)也是必需的。
謝謝,它真的工作 – TorosFanny
它確實有效,我怎麼能知道一些問題是由於缺少語言擴展? – TorosFanny
@ user1926094錯誤消息GHC試圖嘗試一個實例Foo(Int - > Float),其中......應該包含(在不太老的GHC中)'FlexibleInstances'的建議。 –
我真的發現錯誤信息包含「使用-XFlexibleInstances,如果你想禁用這個」,但我只將它作爲shell編譯時的選項。現在我意識到它也是一個語言擴展 – TorosFanny