|
class Foo { // ... } module Bar { // ... } |
module Foo { public SomeMethod () : void { // ... } private SomeOtherMethod (x : int) : int { // ... } private Frobnicate (x : int, y : string) : int { // ... } } |
module Bar { qux : int; private quxx : int; bar : float; } |
module Hello { Main () : void { System.Console.WriteLine ("Hello cruel world!") } } |
if
fib (n : int) : int { if (n < 2) 1 else fib (n - 1) + fib (n - 2) } |
local function, type inference, failure with it
fib (n : int) : int { def loop (last1 : int, last2, cur) { if (cur >= n) last2 else loop (last2, last1 + last2, cur + 1) }; loop (1, 1, 1) } |
semicolon after for, mutable, def, assignment
fib (n : int) : int { mutable last1 <- 1; mutable last2 <- 1; for (mutable cur <- 1; cur < n; cur <- cur + 1) { def tmp = last1 + last2; last1 <- last2; last2 <- tmp; }; last2 } |
using framework classes, no new, printf, what the heck?
the_answer_to_the_universe () : int { def r = System.Random (); r.Next (100) } print_answer () : void { def the_answer = the_answer_to_the_universe (); System.Console.WriteLine ("The answer to the Ultimate " + "Question of Life, the " + "Universe and Everything " + "is {0}", the_answer) } printf_answer () : void { def the_answer = the_answer_to_the_universe (); printf ("The answer is %d\n", the_answer); } |
array type syntax, when, assignment again, type enforcement, array ctor syntax
module M { reverse_array (ar : array <int>) : void { def loop (left, right) { when ((left : int) < right) { def tmp = ar[left]; ar[left] <- ar[right]; ar[right] <- tmp; loop (left + 1, right - 1) } }; loop (0, ar.Length - 1) } print_array (ar : array <int>) : void { for (mutable i <- 0; i < ar.Length; i <- i + 1) printf ("%d\n", ar[i]) } Main () : void { def ar = array [1, 42, 3]; print_array (ar); printf ("\n"); reverse_array (ar); print_array (ar); } } |
1. Write a program that prints out to the console:
1 bottle of beer. 2 bottles of beer. 3 bottles of beer. ... 99 bottles of beer. |
With appropriate amount of beer instead of .... Program source code shouldn't exceed 30 lines.
2. Implement bogo sort algorithm for array of integers. (WARNING: you should not implement ,,destroy the universe'' step). Test it by sorting the following array: [4242, 42, -42, 31415].
Class library reference from Microsoft can be found under http://msdn.microsoft.com/library/en-us/cpref/html/cpref_start.asp.