How do I make an instance of the Vehicles class below? Thanks, Pat
class Containers x y where insert :: y -> x y -> x y remove :: y -> x y -> x y whatsIn :: x y -> [y] instance Containers [] Char where insert y [] = y:[] insert y m = y:m remove _ [] = [] remove x (y:ys) | x == y = remove x ys | otherwise = y : remove x ys whatsIn = id instance Containers [] Integer where insert y [] = y:[] insert y m = y:m remove _ [] = [] remove x (y:ys) | x == y = remove x ys | otherwise = y : remove x ys whatsIn = id instance Containers [] [a] where insert x y = x:y -- lists of lists -- insert [1] [[3,6],[45]] class Surfaces a b where put :: b -> a b -> a b takeOff :: b -> a b -> a b whatsOn :: a b -> [b] instance Surfaces [] Integer where put y [] = y:[] put y m = y:m takeOff _ [] = [] takeOff x (y:ys) | x == y = takeOff x ys | otherwise = y : takeOff x ys whatsOn = id class Contacts a b where attach :: b -> a b -> a b detach :: b -> a b -> a b whatsAt :: a b -> [b] instance Contacts [] Integer where attach y [] = y:[] attach y m = y:m detach _ [] = [] detach x (y:ys) | x == y = detach x ys | otherwise = y : takeOff x ys whatsAt = id class Paths a b c where move :: c -> a b c -> a b c origin, destination :: a b c -> b whereIs :: a b c -> c -> b instance Paths (,) Integer Integer where -- `Integer -> (Integer, Integer) -> (Integer, Integer)' move c (a,b) = (a+1,b+1) origin (a,b) = a destination (a,b) = b whereIs (a, b) c = b -- Test -- move (1::Integer) (3::Integer,5::Integer) -- origin (3::Integer,5::Integer) class People p where class HeavyLoads l where class Surfaces w o => WaterBodies w o where instance WaterBodies [] Integer where class Containers h o => Houses h o where class (Surfaces v o, Paths a b (v o)) => Vehicles v o a b where -- I do not know how to make an instance of Vehicles -- What seems to be the *obvious* does not work -- instance Vehicles [] Integer (,) Integer Integer where -- Kind error: `Vehicles' is applied to too many type arguments -- In the instance declaration for -- `Vehicles [] Integer (,) Integer Integer' This message has been scanned for content and viruses by the DIT Information Services E-Mail Scanning Service, and is believed to be clean. http://www.dit.ie _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe