[Haskell-cafe] ATs [The container problem]
Andrew Coppin
andrewcoppin at btinternet.com
Sat Sep 27 14:34:55 EDT 2008
Antoine Latter wrote:
> Sure! Using type-families:
>
>
>> class Container c where
>> type Elem c
>> insert :: Elem c -> c -> c
>>
>
>
>> instance Container [a] where
>> type Elem [a] = a
>> insert = (:)
>>
>
>
>> instance Container ByteString where
>> type Elem ByteString = Word8
>> insert = BS.cons
>>
>
>
>> instance Ord a => Container (Set a) where
>> type Elem (Set a) = a
>> insert = Set.insert
>>
>
>
That's more or less how I was hoping it works. (Was unsure of the actual
syntax, and the documentation is rather terse.)
So there's a class called Container that has a _type_ that is
_associated_ with it, representing the type of the elements? And you can
set that type to be either a type variable or an explicit type?
> Now the hard part is coming up with a proper API and class hierarchy.
>
So... exactly like in every OOP language in existence then? ;-)
More information about the Haskell-Cafe
mailing list