はじめての OCaml (2) - 基本文法 / 基本機能 - 備考録とエトセトラ
基本的な文法を確認してみます。
コメント
C++やJavaでいうところの // に該当する1行コメントはありません。
(*
* このようにコメントを書けます
* (*
* * ネストさせることも(*できます*)
* *)
*)
また、ドキュメント生成ツールとして、ocamldocというツールがあるようです。
それに対応したコメントの記述方法が以下となります。
(** このように、"(**" と "*)" で囲むと、
ocamldoc で出力される対象になるようです *)
標準でドキュメント生成機構がついている言語はっょぃの法則。
ocamldoc のその他文法はまたこんど。
文のおわり
セミコロン2コです。
これ忘れると評価されません。C言語等のノリで1コにするとハマります。
「ナゼ2個なんだっ……!!」というツッコミは、古き良き手続き型経験者共通の疑問……なのかな?
print_string "hoge\n";;
四則演算
ド定番、基本中の基本の機能です。
整数と浮動小数点数で演算子が違うので、注意が必要です。
また、整数と浮動小数点数とを足し合わせることはできません。
しかるべき型変換関数を呼び出して変換する必要があります。
詳細は、またの機会に…。
(* 和 *)
let i = 1 + 2;; (* val i : int = 3 *)
let f = 1.0 +. 4.0;; (* val f : float = 5. *)
(* 差 *)
let i = 2 - 1;; (* val i : int = 1 *)
let f = 4.0 +. 1.0;; (* val f : float = 3. *)
(* 積 *)
let i = 2 * 3;; (* val i : int = 6 *)
let f = 3.0 *. 2.5;; (* val f : float = 7.5 *)
(* 商 *)
let i = 10 / 2;; (* val i : int = 5 *)
let f = 3.0 /. 2.0;; (* val f : float = 1.5 *)
(* 余剰 *)
let i = 5 mod 2;; (* val i : int = 2 *)
(* float の余剰計算はなし *)
if - else 文
処理分岐の制御文です。
let f x =
if x <> 0 then print_string "Not 0\n"
else print_string "0\n";;
f 0
(* 0 *)
f 1
(* Not 0 *)
制御文は他にも、手続き型よろしく for / foreach / while もありますが、関数型言語においてはmapや再帰を使うのが一般的。
なので、ここではノータッチ。関数型に慣れるための、いわば縛りプレイ(?)です。
(ゆるい縛りだなぁ…)
ちなみに…
switch-case 文は存在しないようです。
そのかわり、パターンマッチ構文があります。
パターンマッチ構文は次回以降に…。
blog comments powered by Disqus