Calico FSharp
From IPRE Wiki
F# is similar to OCaml and ML. A nice introduction can be found in the online book The F# Survival Guide.
In the interpreted command box, end code with ;; to signal the end of expression. In a file, start with module MyModule.
Graphics.Init();;
let r = Myro.random();;
You can use modules Myro and Graphics directly in the interpreter:
Graphics.Init()
let win = new Graphics._Window("Hello")
let line = new Graphics.Line(new Graphics.Point(0, 0),
new Graphics.Point(100, 100))
line.draw(win);;
And if this were in a file:
module MyModule
Graphics.Init()
let win = new Graphics._Window("Hello")
let line = new Graphics.Line(new Graphics.Point(0, 0),
new Graphics.Point(100, 100))
line.draw(win)
module MyRobotDance Graphics.Init() Myro.init() Myro.forward(1., 1.) Myro.turnLeft(1., .3)
Factorial, recursively:
let rec factorial n =
match n with
| 0 -> 1
| _ -> n * factorial (n - 1);;
That version will run out of stack space at some point. To keep from crashing the stack, put the recursion in the tail position:
let rec factorial n result =
if n <= 1 then result
else
factorial (n - 1) (n * result);;
Both of these will overflow integer, however.
[edit]
Commands
| Directive | Description |
| #help;; | Displays information about available directives. |
| #I "/search/path";; | Specifies an assembly search path in quotation marks. |
| #load "source/file.fs";; | Reads a source file, compiles it, and runs it. |
| #quit | Terminates an F# Interactive session. |
| #r "Myro.dll";; | References an assembly. |
| #time "on";; | By itself, #time toggles whether to display performance information. |
| #time "off";; | When it is enabled, F# Interactive measures real time, CPU time, and garbage collection information for each section of code that is interpreted and executed. |
