Sau đây Haskell kiểu lớp và dụ:Scala vs Haskell typeclasses: "catchall" trường
class Able a where
able :: a -> Int
instance Able Int where
able x = x
thường được dịch sang Scala như vậy:
trait Able[A] {
def able(a: A): Int
}
implicit object AbleInt extends Able[Int] {
def able(a: Int) = a
}
Trong Haskell tôi bây giờ có thể xác định một loại của trường hợp bắt tất cả và do đó tạo ra một thể hiện cho tất cả các loại Có thể:
instance Able a => Able (Maybe a) where
able (Just a) = able a
able Nothing = 0
Điều này định nghĩa một instanc e của Able
cho Maybe Int
, Maybe Bool
vv với điều kiện là có một thể hiện Able
cho Int
, Bool
vv
Làm thế nào người ta sẽ làm điều đó trong Scala?
khéo léo! Cảm ơn nhiều :) – scravy