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.
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)
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.
|#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.|