1
我想創建Haskell的操作或功能顯示的情況下的表現,但我不能弄清楚如何...顯示Haskell的操作
我試圖
instance (Show (+)) where
show (+) = "+"
但當然,它不起作用。有誰知道該怎麼做?
我想創建Haskell的操作或功能顯示的情況下的表現,但我不能弄清楚如何...顯示Haskell的操作
我試圖
instance (Show (+)) where
show (+) = "+"
但當然,它不起作用。有誰知道該怎麼做?
這可能不是您要查找的內容,但它可能是最接近的:我們可以隨時將類型類簽名轉換爲具體的數據類型。
-- built it
class Num a where
(+) :: a -> a -> a
(*) :: a -> a -> a
(-) :: a -> a -> a
negate :: a -> a
abs :: a -> a
signum :: a -> a
fromInteger :: Integer -> a
-- ours
data Num
= Plus Num Num
| Mult Num Num
| Subt Num Num
| Neg Num
| Abs Num
| Signun Num
| FromInt Integer
deriving (Show)
instance Num Num where
(+) = Plus
(-) = Subt
(*) = Mult
negate = Neg
abs = Abs
signum = Signum
fromInteger = FromInt
而現在我們可以用我們的Num
數據類型deriving (Show)
位看錶情。
>>> 3 + 2 :: Num
Plus (FromInt 3) (FromInt 2)
但一般有比這沒辦法要簡單得多,顯示Haskell函數或運營商。通常,一旦你已經得到了一個類型的值一樣a -> b
那麼你可以做的最好的事情,以檢查它是給它餵食a
小號
instance Show a => Show (Bool -> a) where
show f = "Fun { True -> " ++ show (f True) ++ ", False -> " ++ show (f False) ++ " }"
>>> id :: Bool -> Bool
Fun { True -> True, False -> False }
>>> not
Fun { True -> False, False -> True}
'(+)'是不是一個類型。類型可以是實例但不是值。 –
[顯示Haskell函數列表]的可能的重複(http://stackoverflow.com/questions/20848348/show-a-list-of-functions-in-haskell) –
並從可能的重複:http:/ /www.haskell.org/haskellwiki/Show_instance_for_functions –