Penguin

Differences between version 2 and revision by previous author of ML.

Other diffs: Previous Major Revision, Previous Revision, or view the Annotated Edit History

Newer page: version 2 Last edited on Monday, February 10, 2003 10:11:23 pm by PerryLorier Revert
Older page: version 1 Last edited on Thursday, February 6, 2003 8:47:05 pm by GlynWebster Revert
@@ -1,9 +1,9 @@
 ''(I'm not completely happy with this description, but I'm bored now and want to press __Save__ --GlynWebster)'' 
  
 ML is a family of functional ProgrammingLanguages. The other two widely used functional programming language families are [LISP] and [Haskell]. 
  
-Unlike [LISP], [ML] all type checking is done at compile time. You don't need to declare the type of every variable though, an ML compiler can usually determine the variable's type bu analyzing how it is used. The type system is close to [Haskell]'s. (It is "polymorphic" but does not have "type classes".) 
+Unlike [LISP], [ML] all type checking is done at compile time. You don't need to declare the type of every variable though, an ML compiler can usually determine the variable's type by analyzing how it is used. The type system is close to [Haskell]'s. (It is "polymorphic" but does not have "type classes".) 
  
 [ML] has a vaguely Pascal-like syntax. It's not pretty, but it's not [LISP]. 
  
 Unlike [Haskell], [ML] is not "lazy": functions evaluate their arguments before the function is called. This means you can predict the order that ML expressions will be evaluated in, ML can allow variables to be reassigned and the I/O system can be more conventional. It also means some of the fancier functional Haskell programming tricks that rely on delayed evaluation are ruled out, but if you've programmed in Haskell you're probably more relived than disappointed to here this.