Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
3a99ac7
commit 37050a3
Showing
4 changed files
with
37 additions
and
84 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,35 @@ | ||
An implementation of an eager statically typed functional language with | ||
a compiler and an abstract machine. | ||
|
||
The language has the following constructs: | ||
|
||
* Integers with arithmetic operations `+`, `-` and `*`. (There is no | ||
division because the language has no exceptions.) | ||
* Booleans with conditional statement and comparison of integers | ||
`=` and `<`. | ||
* Recursive functions and function application. The expression | ||
|
||
fun f (x : t) : s is e | ||
|
||
denotes a function of type `t -> s` which maps `x` to `e`. In `e` | ||
the function refers to itself as `f`. | ||
|
||
* Toplevel definitions | ||
|
||
let x = e | ||
|
||
There are no local definitions. | ||
|
||
Example interaction: | ||
|
||
MiniML. Press Ctrl-D to exit. | ||
MiniML> 3 + (if 5 < 6 then 10 else 100) ;; | ||
- : int = 13 | ||
MiniML> let x = 14 ;; | ||
x : int = 14 | ||
MiniML> let fact = fun f (n : int) : int is if n = 0 then 1 else n * f (n-1) ;; | ||
fact : int -> int = <fun> | ||
MiniML> fact 10 ;; | ||
- : int = 3628800 | ||
MiniML> | ||
Good bye. |
This file was deleted.
Oops, something went wrong.
File renamed without changes.