Skip to content

Instantly share code, notes, and snippets.

@vasily-kirichenko
vasily-kirichenko / gist:2941159
Created June 16, 2012 11:58
Fibonacci in Erlang
fib(0) -> 0;
fib(1) -> 1;
fib(N) when N > 0 -> fib(N - 1) + fib(N - 2).
lists:foreach(fun(N) -> io:format("n=~p => ~p~n", [N, fib(N)]) end, lists:seq(0, 39)).
let rec fib n =
match n with
|0|1 -> n
|x when x > 0 -> fib(x - 1) + fib(x - 2)
for x in 0..39 do
printfn "fib(%d) = %d" x (fib x)
type BinaryTree =
|Node of obj * BinaryTree * BinaryTree
|Empty
member tree.Traverse f =
match tree with
|Node(data, l, r) ->
f data
l.Traverse f
r.Traverse f
|Empty -> ()
@vasily-kirichenko
vasily-kirichenko / gist:3099646
Created July 12, 2012 17:53
Fibonacci in Nemerle
def fib(n)
{
|0|1 => n
|_ => fib(n - 1) + fib(n - 2)
}
foreach (i in $[0..39])
WriteLine("fib({0}) = {1}", i, fib(i));
@vasily-kirichenko
vasily-kirichenko / gist:3105374
Created July 13, 2012 15:06
Not null in Nemerle
public macro not_null(obj)
syntax ("not_null", obj)
{
def var_name = $"$obj";
<[
when ($obj == null)
throw System.ArgumentNullException($var_name);
$obj;
]>
}
@vasily-kirichenko
vasily-kirichenko / gist:3105479
Created July 13, 2012 15:28
Not null in Nemerle
public macro not_null(obj)
syntax ("not_null", obj)
{
def var_name = $"$obj";
<[
when ($obj == null)
throw System.ArgumentNullException($var_name);
$obj;
]>
}
@vasily-kirichenko
vasily-kirichenko / gist:3109998
Created July 14, 2012 08:11
Contracts in Nemerle
class Person
{
public Name: string;
public this(name: string)
requires name != null
{
Name = name;
}
}
class Person
{
public Name: string;
public Age: int;
public this(requires (name != null && name.Length > 0) name: string,
requires (age > 0) age: int)
{
Name = name;
Age = age;
@vasily-kirichenko
vasily-kirichenko / gist:3111157
Created July 14, 2012 12:59
Not null in Nemerle
class Person
{
public Name: string;
public this([NotNull] name: string)
{
Name = name;
}
}
@vasily-kirichenko
vasily-kirichenko / gist:3878718
Created October 12, 2012 11:09
FIC in clojure
(defn fib [n]
(if (< n 2)
n
(+ (fib (- n 1))
(fib (- n 2)))))
(time
(doseq [n (range 40)]
(prn (str "Fib(" n ") = " (fib n)))))