7
Poniżej Haskell klasy typu i przykład:Scala vs Haskell typeclasses "catchall" przypadki
class Able a where
able :: a -> Int
instance Able Int where
able x = x
powszechnie przeliczeniu na Scala tak:
trait Able[A] {
def able(a: A): Int
}
implicit object AbleInt extends Able[Int] {
def able(a: Int) = a
}
Haskell można obecnie określić rodzaj z instancji typu catch-all, a tym samym utwórz instancję dla wszystkich typów typu Może:
instance Able a => Able (Maybe a) where
able (Just a) = able a
able Nothing = 0
To definiuje instancję e od Able
dla Maybe Int
Maybe Bool
itp, pod warunkiem, że nie jest instancją Able
dla Int
, Bool
itp
Jak można by zrobić w Scala?
Pomysłowy! Dziękuję Ci bardzo :) – scravy