\オッキャムル/
% brew search ocaml ocaml ocamlsdl % brew install ocaml ==> Downloading https://homebrew.bintray.com/bottles/objective-caml-4.02.1_2.yosemite.bottle.1.tar.gz ######################################################################## 100.0% ==> Pouring objective-caml-4.02.1_2.yosemite.bottle.1.tar.gz 🍺 /usr/local/Cellar/objective-caml/4.02.1_2: 776 files, 75M % which ocaml /usr/local/bin/ocaml % ocaml -version The OCaml toplevel, version 4.02.1
Hello, Ocaml!!
% vi hello.ml
hello.ml
(* 2000億円ほしい *) print_string "Hello, Ocaml!!\n";;
% ocamlc -o hello hello.ml % ./hello Hello, Ocaml!! %
FizzBuzz
fizzbuzzくらいはやろう
(* 2000億円ほしい *) print_string "なんかとりあえずfizbuzでもやる\n";; (* * match (タプル) with | 条件 | 条件 みたいなのは * パターンマッチングという文法のようだ * http://ocaml.jp/OCaml%E5%85%A5%E9%96%80(2)#content_1_3 *) let fizbuz i = match ((i mod 3), (i mod 5)) with | (0,0) -> "fizbuz" | (_,0) -> "buz" | (0,_) -> "fiz" | (_,_) -> string_of_int i ;; (* 見るからに、fizbuzという関数はintを受けてstringを返す関数のようだ *) (* ループしてんのはこいつなのか *) (* for i = 1 to n do ほげほげ がループっぽい *) (* しかし関数の定義が、letなのはわかるけど *) (* どっからがfunc bodyなんだ... *) let do_fizbuz n = for i = 1 to n do (* ()は基本タプルだと思ってたけど、 *) (* 呼び出しも(関数 引数)のようだ *) (* タプルになるのは,をつけたときなのかな *) Printf.printf "%s\n" (fizbuz i) (* これはきっと for to do のブロックの終了だと思われ *) done;; (* mainのスコープで関数を呼び出す *) do_fizbuz 30
% ocamlc fizbuz.ml % ./a.out
思ってたよりとっつきにくくはなさそうだとおもいましたまる
DRYな備忘録