2010/7/25 Andrew Coppin <andrewcop...@btinternet.com>: > Patrick Browne wrote: >> >> Andrew, >> Thanks for your detailed feedback, it is a great help. >> > > Well, I like to be helpful. > >> I appreciate that the code does not do anything useful, nor is it an >> appropriate way to write Haskell, but it does help me >> understand language constructs. > > Personally, I find it easier to understand things when they do something > meaningful, but sure. > >> I am studying the Haskell type class system as part of a language >> comparison. I am trying to exercise and understand the constructs rather >> than develop a meaningful application. >> > > The best way to understand Haskell is... to completely forget everything you > already know, and start again from scratch. ;-) Still, I gather that's not > the point of this particular exercise. > > Since you're interested in comparisons... A method is simply a way of giving > the same name to several different functions, and have the compiler pick the > correct one based on the argument types. > [snip]
Actually in Haskell, the choice of the correct definition is not only based on the argument types. It could be based on the result type: class C a where f :: a g :: a -> Int h :: String -> a An example of the 'h' case is simply the 'read' function: Prelude> :t read read :: (Read a) => String -> a For instance: Prelude> read "1" :: Int 1 Prelude> read "1" :: Double 1.0 Note that usually, the type annotation is not needed because the compiler has enough information from the context to infer it. Cheers, Thu _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe