我正在玩初學者哈斯克爾,我想寫一個平均功能。這似乎是世界上最簡單的事情,對吧? 錯誤。 看起來Haskell的類型系統禁止使用泛型數字類型的平均值 - 我可以讓它在Integrals列表或Fractionals列表上工作,但不能同時使用它們。 我想: average :: (Num a, Fractional b) => [a] -> b
average xs = ...
但我只能得到: a
哈斯克爾玩弄了一下後,我偶然發現了這個功能: Prelude Data.Maclaurin> :t ((+) . ($) . (+))
((+) . ($) . (+)) :: (Num a) => a -> (a -> a) -> a -> a
(Data.Maclaurin由包向量空間出口)。所以它需要一個民,功能,另一個民最終收益一個數字。以下工作有什麼魔力? Prelude Data
我想添加deriving (Data)到標準類型。使StandaloneDeriving,FlexibleContexts,DeriveDataTypeable,並且UndecidableInstances擴展後,GHC接受 deriving instance Data Day => Data (Day)
但是,如果我爲DiffTime做同樣的事情,我得到
TemperatureRecor
是否有某種方式(任何方式)在類型類中實現約束? 作爲我正在談論的一個例子,假設我想實現一個Group作爲一個類型類。因此,一類是一組,如果有三個功能: class Group a where
product :: a -> a -> a
inverse :: a -> a
identity :: a
但這些都沒有任何功能,但它們必須通過一些約束有關。例如: pro
我正在學習Haskell。我已經創建了函數,它返回乘法表到'b'的基數'n'。數字填充爲'w'數字。作爲最後一步,我想自動計算'w'。爲什麼不能編譯? -- Number of digits needed for the multiplication table n*n in base 'base'
nOfDg :: Int -> Int-> Int
nOfDg n base = 1 + fl
試圖創建一個基類,我可以從中派生出不同類型。以下有什麼問題? class (Eq a) => MyClass a
data Alpha = Alpha
instance MyClass Alpha where
Alpha == Alpha = True
我得到的錯誤: test.hs:5:10: `==' is not a (visible) method of class `