これまでのまとめ
本日のお品書き
なんだか一瞬Twitterで話題になったOCamlさん。
FizzBuzz
- 関数型言語(だと思うん)だけど
for
もあることがわかったOCamlさん - いや、意地でもパターンマッチと再帰でやりくりしてみます
- パターンマッチ
h::rest
でリストの先頭とそれ以外をデコンストラクションしている
- パターンマッチ
fizzbuzz.ml
let rec fizzbuzz x =
match x with
| [] -> print_string ""
| h::rest ->
if h mod 15 = 0 then print_endline "FizzBuzz"
else if h mod 3 = 0 then print_endline "Fizz"
else if h mod 5 = 0 then print_endline "Buzz"
else print_endline (string_of_int h);
fizzbuzz(rest);;
(* Erlangのlists:seq(1,100)相当 ↓ *)
fizzbuzz (list.init 100 (fun x -> x+1));;
おまけ:実行方法
docker run --rm --mount type=bind,source=$(pwd),target=/app -w /app ocaml/opam ocaml fizzbuzz.ml