Great job Stephen. Thank for explaining . I got it to work.
On Tue, Apr 20, 2010 at 9:21 AM, Stephen Tetley <[email protected]>wrote: > Hi > > If you are working with characteristic functions (Point -> Bool or > Point -> Colour...) the common way to do this is to manufacture a Num > instance for functions. This gives you syntax overloading of the (+, > -, *) operators. Similarly you might want to overload (or have to > overload) Floating, Fractional... > > Examples using this technique are Jerzy Karczmarczuk's Clastic, Conal > Elliott's Vertigo, Tangible Values, Pan etc. > > To overload Num you have to define Show and Eq instances for functions > as well. Something along the lines of this is adequate: > > type CF = (Double,Double) -> Bool > > instance Show CF where > show _ = "<function>" > > instance Eq CF where > (==) _ _ = error "No Eq on Characteristic functions" > > instance Num CF where > f + g = \pt -> f pt + g pt > -- ... > negate f = \(x,y) -> f (negate x, negate y) > > -- ... rest follows this pattern, Floating, Fractional similar > > If you characteristic function is Point -> Bool then you also need a > Num instance for Bool. > > All that said, I think your formulation of func above is slightly > wrong to fit this style. Its forming a function (-> Point) "to point" > rather than a characteristic function Point -> Bool. > > Best wishes > > Stephen > _______________________________________________ > Haskell-Cafe mailing list > [email protected] > http://www.haskell.org/mailman/listinfo/haskell-cafe > -- Mujtaba Ali Alboori
_______________________________________________ Haskell-Cafe mailing list [email protected] http://www.haskell.org/mailman/listinfo/haskell-cafe
