Penguin

Differences between version 24 and previous revision of ML.

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

Newer page: version 24 Last edited on Tuesday, November 9, 2004 1:13:32 am by AristotlePagaltzis Revert
Older page: version 23 Last edited on Sunday, March 7, 2004 9:27:51 am by AristotlePagaltzis Revert
@@ -1,34 +1,36 @@
-__ML__ is a family of StaticallyTyped functional programming languages with StrictEvaluation, PolymorphicTypes, HigherOrderFunctions, a higher-order module system. [ML] can be used interactively for learning, experimentation and testing, or it can be compiled. The two major dialects of [ML] are [Ocaml ] and [SML]. [SML] is a standardised language with several implementations. [Ocaml ] has a single open source implementation, it extends [ML] with an [OOP] system. Both major dialects have compilers that produce native code that rival the speed of [C++], and extensive standard and third-party libraries. 
+__ML__ is a family of StaticallyTyped functional programming languages with StrictEvaluation, PolymorphicTypes, HigherOrderFunctions, a higher-order module system. [ML] can be used interactively for learning, experimentation and testing, or it can be compiled. The two major dialects of [ML] are [OCaml ] and [SML]. [SML] is a standardised language with several implementations. [OCaml ] has a single OpenSource implementation, it extends [ML] with an [OOP] system. Both major dialects have compilers that produce native code that rival the speed of [C++], and extensive standard and third-party libraries. 
  
-[Why YOU want to program in ML | http://www.schizomaniac.net/ml.html] gives you a tour of the features of [ML] that make it a good general-purpose programming language. It talks about [SML], but what it says applies to [Ocaml ] as well. 
+[Why YOU want to program in ML | http://www.schizomaniac.net/ml.html] gives you a tour of the features of [ML] that make it a good general-purpose programming language. It talks about [SML], but what it says applies to [OCaml ] as well. 
  
 !!!An example of [ML] code: 
  
- __fun__ interpret_functionally (program : opcode list) : unit =  
- (* Interprets a parsed [Brainf*ck] program using integers  
- on a strip of TuringMachine tape as the memory. *)  
- __let__  
- __val__ fresh_tape = Tape.make()  
- __fun__ step (tape, op) =  
- __let__ byte = Tape.read(tape) __in__  
- __case__ op __of__  
- Inc_ptr n => times(n, Tape.forward, tape)  
- | Dec_ptr n => times(n, Tape.back, tape)  
- | Inc_byte n => Tape.write(byte + n, tape)  
- | Dec_byte n => Tape.write(byte - n, tape)  
- | Putchar => ( putchar(byte) ; tape )  
- | Getchar => Tape.write(getchar(), tape)  
- | Loop body =>  
- __if__ byte = 0 __then__ tape  
- __else__ step (step_sequence (tape, body), op)  
- __end__  
- __fun__ step_sequence (tape, oplist) =  
- List.foldl(step, tape, oplist)  
- __in__  
- ignore (step_sequence(fresh_tape, program))  
- __end__ 
+<pre>  
+ __fun__ interpret_functionally (program : opcode list) : unit =  
+ (* Interprets a parsed [Brainf*ck] program using integers  
+ on a strip of TuringMachine tape as the memory. *)  
+ __let__  
+ __val__ fresh_tape = Tape.make()  
+ __fun__ step (tape, op) =  
+ __let__ byte = Tape.read(tape) __in__  
+ __case__ op __of__  
+ Inc_ptr n => times(n, Tape.forward, tape)  
+ | Dec_ptr n => times(n, Tape.back, tape)  
+ | Inc_byte n => Tape.write(byte + n, tape)  
+ | Dec_byte n => Tape.write(byte - n, tape)  
+ | Putchar => ( putchar(byte) ; tape )  
+ | Getchar => Tape.write(getchar(), tape)  
+ | Loop body =>  
+ __if__ byte = 0 __then__ tape  
+ __else__ step (step_sequence (tape, body), op)  
+ __end__  
+ __fun__ step_sequence (tape, oplist) =  
+ List.foldl(step, tape, oplist)  
+ __in__  
+ ignore (step_sequence(fresh_tape, program))  
+ __end__  
+</pre>  
  
-(This is in SML.) 
+(This is in [ SML] .) 
  
 ---- 
 CategoryProgrammingLanguages, CategoryFunctionalProgrammingLanguages