Ocaml
# let accgen n = let m = ref n in fun x -> m := m!+x; !m;;
オブジェクト指向のサポートには全然目を向けていなかったので、 少しずつやり始めてみる。 class screen = object method outputToStdout s = print_string s end class printer s = object val screen = s method print s = screen#outputToStdout s end l…
平方根を求めるアルゴリズム sqrt-root. ビルトイン関数に含まれているのだけど、アルゴリズムの演習って事で、 再実装してみる。 まずは、Schemeで。 (define (sqrt n) (define (abs n) (if (improve guess n) (average guess (/ n guess))) (define (good-…
関数プログラミングのテキストって、 末尾再帰はループに最適化可能と書いてる割りには、 例題のコードでは末尾再帰になっていない事が多い様な気がする。 # let null l = (l = );; val null : 'a list -> bool = (* 末尾再起で・・・ *) #let size l = let …
abs の実装。Scheme (define (fib n) (cond ((> n 0) n) ((= n 0) 0) ((< n 0) (- n)))) (define (fib n) (if (< n 0) (- n) n)) Ocaml let abs = fun x -> if x < 0 then -x else x;; Python abs1 = lambda x: x < 0 and -x or x def abs2(n) : if n < 0: r…
# let num = ref 0;; val num : ref int = 0 # !num;; - : ref int = 0 # num := 10;; - : unit() # !num;; - : ref int = 10
print_string "Hello world\n";;