
Jay Cox
I'm not sure anything under haskell can be considered OO but I'm no languages expert.
IMO, it's very alike "mix-ins", Java's interfaces, pure abstract classes.
You might could mention something about Type classes. This is the main (only) method of overloading functions in haskell.
maybe you might make mention of polymorphic type system and how haskell uses type inferencing to determine the meaning of expressions (relates to type classes).
syntax-across-languages doesn't favour big explainations :p
Using
data = Foo ... really should be meantioned as a way to construct new types. newtype = Foo ... (new type)
type Foo = ... is only a type synonym. heres an example. type String = [Char]
ok (i won't mention that i always have a hard time dinstiguishing them)
Under constrol structure, at least give mention to monads! Common examples (ST,IO,List,Maybe) and "do notation"
Monads are defined by instanciating them under the Monad type class. (basically giving definitions for the operators >>= (aka 'bind') and >>
please be more precise, what do i put? in which category?
I dont think you give list comprehensions a fair shake either. (btw, list comprehension is an example of an alternative syntax for using lists as a monad.)
[f z elem | anylistfromlistoflists <- listoflists, element<-anylistfromlistoflists, elem >= 3, z <- someotherlist]
i could add a category for list comprehension. is this a good approximate syntax? [ f x0 x1 ... | x0 <- a_list, pred x0, ... ]
References arent missing. They are implemented under both the ST and IO monads.
what is the syntax?
sprintf ... show ?? (still show peruses no format specifiers so it can be kinda blah.)
no, "show" is really in the 'convert something to a string' category
(!!) extracts a char from String since type String = [Char]
ok
oh, and it isnt missing those math functions either. Take another look at the Prelude (google search it as I'm to lazy to find out url for exact page in haskell 98 report)
ok, added.