Following the type of convert you have convert f fig = \(x,y) -> f (fig (x,y)) = { Lambda parameter } convert f fig (x,y) = f (fig (x,y)) = { point wise } convert f fig (x,y) = (f . fig) (x,y) = { $ operator } convert f fig (x,y) = f . fig $ (x,y) = { (x,y) is a tuple parameter } convert f fig pos = f . fig $ pos All those definitions for convert are equivalent and do the trick. Moreover, if you define a Figure data type: data Figure a = Figure (Pos -> a) the convert definition is: convert f (Figure g) = Figure (\pos -> f . g $ pos) and corresponds to fmap function of the Functor class for the Figure data type, making a Figure an instance of Functor: instance Functor Figure where fmap = convert Cheers Francisco On Sun, Jun 22, 2014 at 7:13 PM, Peter Kaldenberg <pkaldenberg@gmail.com> wrote:
Dear all,
I have a problem, I am working on functional images and have now a problem that I need to write a function with the following signature
convert::(a->b)->Figure a ->Figure b
Where Figure a :: Pos -> a and type Pos= (Double, Double)
For instance I have an Image chessBoard. chessBoard::Figure Bool chessBoard(x,y)= even(round x)==even(round y)
I also have a function boolChar::Bool -> Char
now I want to call convert like convert boolChar chessBoard which will give me an Image with the following type Char.
How can I solve this problem?
Many thanks, Peter _______________________________________________ Haskell mailing list Haskell@haskell.org http://www.haskell.org/mailman/listinfo/haskell
-- Francisco Jose CHAVES PhD