基本的な文法を確認してみます。

コメント

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

Published

08 July 2017

Tags