
On Tue, 21 Dec 2010, gutti wrote:
One thing that still confuses me a litte:
polynom: double -> double ->double polynom x y = y^2 + x^2 + 2*x*y
Type declaration for this polynom with two inputs
I guess you mean upper case "Double", otherwise it's a type variable and the compiler will ask for type constraint like "polynom :: Num double => ..." Btw. the english word for the german "Polynom" is "polynomial". :-)
- what is input and what is output and which way a I supposed to read it ? -- x,y,polynom ? and when would I use double -> double => double
'polynom' is the function, 'x' and 'y' are its parameters (input), 'polynom x y' is the function value (output). The type 'double -> double => double' does not exist. The double arrow can be only at one place, immediately after the '::' and it separates the type constraints from the type expression. polynomialFunction :: Num a => a -> a -> a
Is there by the way the possibility in haskell to create functions with several outputs - ala Matlab function declation:
function [N,k] = histogram(v,n)
You can use pairs for results (and of course for arguments, too). See for instance: Prelude> :type divMod divMod :: (Integral a) => a -> a -> (a, a) What you cannot do in contrast to MatLab: You cannot omit function parameters in a function call, in a function implementation you cannot check for the number of parameters that the user has given actually (because the user cannot omit any argument at all), and you cannot check the number of requested output values. For me these restrictions are an advantage. In MatLab, a function can perform something completely different depending on the number of output or input values.
Hope I'm not asking too basic questions here, so feel free to point me to the right tutorial.
There's the haskell-beginners mailing list, but a good tutorial is certainly that by Hal Daume. http://www.haskell.org/haskellwiki/Yet_Another_Haskell_Tutorial However I see, that the URL http://darcs.haskell.org/yaht/yaht.pdf does not work any longer, certainly due to the recent server movement. :-( There is also various stuff at the Wiki: http://www.haskell.org/haskellwiki/Category:Idioms http://www.haskell.org/haskellwiki/Category:FAQ http://www.haskell.org/haskellwiki/Category:Glossary http://www.haskell.org/haskellwiki/Category:Style http://www.haskell.org/haskellwiki/Common_Misunderstandings http://www.haskell.org/haskellwiki/Haskell_programming_tips