下Haskell的類型類和實例: class Able a where
able :: a -> Int
instance Able Int where
able x = x
通常翻譯爲斯卡拉,像這樣: trait Able[A] {
def able(a: A): Int
}
implicit object AbleInt extends Able[I
一個類型類從編程斯卡拉書所採取的示例: case class Address(street: String, city: String)
case class Person(name: String, address: Address)
trait ToJSON {
def toJSON(level: Int = 0): String
val INDENTATION =
我從列表中知道的大多數方法實際上是一些衆所周知的類型類的特例。的方法的一些實例和相關類型的類: map :: (a -> b) -> [a] -> [b]和Functor foldr :: (a -> b -> b) -> b -> [a] -> b和Foldable forM :: Monad m => [a] -> (a -> m b) -> m [b]和Traversable concat
我已經做了類型的類的實例時有問題,並提出列表類型的類的實例,但我得到它,我不明白 class MyType a where
listsum:: a->a->Double
instance (Num a)=>MyType [a] where
listsum x y = sum $ zipWith (-) x y
listsum返回錯誤單值但這是錯誤,我得到: Could not
在Haskell,如果我有兩個功能是這樣的: defEither ∷ Either l r → r → r
defEither eith defVal = either (const defVal) id eith
和 defMaybe ∷ Maybe a → a → a
defMaybe m d = fromMaybe d m
我怎樣寫一個類型的類(或其它類似效果),使得我可以概括的
我通過一些在LYAH的例子讀,我碰到這個代碼片段來到之間使用: replicate' :: (Num i, Ord i) => i -> a -> [a]
replicate' n x
| n <= 0 = []
| otherwise = x:replicate' (n-1) x
這是網絡版,但我也有一個這本書的副本,它有這個代替: replicate' :: Int
所以我打這件事 {-# LANGUAGE FlexibleInstances, MultiParamTypeClasses, FunctionalDependencies #-}
import Data.Monoid
class Monoid m => Mconcat m a | a -> m where
mcon :: m -> a
instance Monoid m =>
我剛剛學習Haskell,並希望開發我的第一個遞歸ADT。 我的數據類型Figure應該能夠表示矩形和圓的任意組合,並且方法area應該計算圖的總面積(忽略重疊)。 問題是,對於例如矩形,寬度和高度爲Integer,而面積的結果應爲Double(或至少一個浮點數)。 data Figure = Rect { x :: Integer, y :: Integer, width :: Integer,