我試圖在Prelude庫中僅使用函數的兩個數字列表之間實現一個點積。我寫了下面的功能: dot :: Num a => [a] -> [a] -> a
dot x y = sum $ zipWith (*) x y
我測試如下: main :: IO()
main = do
let n = 10^6
x = (replicate n 2.0) :: [Double]
循環,我現在有像下面這樣的結構: class F a where
f :: ...
default f :: (G a...) => ...
f = (some definition in terms of g)
class F a => G a where
g :: ...
default g :: (C a...) => ...
我正在嘗試爲FromJSON typeclass寫一個不知何故的通用實例。這個想法是在解析JSON時使用數據類型名稱。我認爲這是GHC應該能夠做到的事情,但到目前爲止,我的嘗試失敗了。最簡單的版本,使用Typeable typeclass如下。 data GetResponse a = GetResponse { getCode :: Int, getItem :: a } deriving (S
使用Bifunctor時,我們可以訪問first和second「地圖」功能。所以基本上這是一個Functor,允許我們以兩種不同的方式fmap。 有沒有像Monoid這樣的東西?一些概念允許我們以兩種不同的方式追加? 例如,假設一個不透明的Matrix類型。它不是列表或矢量矢量列表,我們不知道它是如何在內部構造的,但我們知道可以將行和列附加到它。 會有一些類型的類允許這樣做嗎? class X a