On Fri, Jun 5, 2009 at 8:05 PM, Martijn van Steenbergen < mart...@van.steenbergen.nl> wrote:
> Hi John, > > John Ky wrote: > >> > full = do >> > let myOrder = init -- [1] >> > { item = Just init >> > { itemId = "Something" >> > } >> > , operation = Just Buy >> > } >> > putStrLn $ show myOrder >> > return () >> >> Where initOrder and initItem are both replaced with just 'init' and the >> compiler works out from the context (ie. the type of the field) what the >> types are supposed to be and therefore the actual init function to call? >> > > Sure! This is one of the simplest forms of overloading. Here's a small > example: > > data Circle = Circle { center :: (Float, Float), radius :: Float } >> data WrapCircle = WrapCircle { circle :: Circle } >> >> class Ini a where >> ini :: a >> >> instance Ini Circle where >> ini = Circle { center = (0, 0), radius = 1 } >> >> exampleCircle :: WrapCircle >> exampleCircle = WrapCircle { circle = ini { radius = 2 } } >> > > Hope this helps! > > Martijn. >
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe