MH <[email protected]> writes: > data Container a = Many a(Container a)
> but here is what I don't understand (fyi, I am a beginner) how can you > construct this container? I can do > let a = Many "somestring" - and I will get back a function but I can not do > let a = Many 'a' "somestring" - because the second param is not > (Container a) type. Right, so you need to pass a 'Container a' for that parameter. > let a = Many 'a' (Container ['a','a']) - doesn't work either because > Container is a type not a constructor (right or I am missing > something?). It doesn't work because the Container parameter must be of the same type. The parameters here are Char (due to the 'a' as the first parameter to Many), and [Char] (due to the ['a','a'] given as parameter to the Container parameter. These are not the same, so it fails. > So I have two questions: > 1. When I do > let b = Many "somestring" , I get > :t b > b :: Container[Char] -> Container[Char] > what is it and why I am allowed to pass just one parameter to Many > (and how can I use it)? This is just partial application. Pass one more parameter to build the whole thing. > 2. How can you construct that container? > data Container a = Many a(Container a) > let a = ???? Well you need a 'Container a' to do it. So you can do for instance: let a = Container 'x' a or let b = Conainer 'y' undefined -k -- If I haven't seen further, it is by standing in the footprints of giants _______________________________________________ Haskell-Cafe mailing list [email protected] http://www.haskell.org/mailman/listinfo/haskell-cafe
