F#のコメントの種類

コメントとは、プログラムへの注釈のことです。 プログラムの実行自体には影響はありません。 F#では、次の2種類(+1種類)のコメント法があります(f#4.1 spec 3.2) ・行コメントとは1行のみのコメント ・ブロックコメントでは(*から*)の間の範囲コメント ・(行コメントの一種)XMLドキュメント用のコメント
行コメント
//行コメント。この1行だけがコメントになる
printfn "hello world";;
ブロックコメント1
(* ブロックコメント。
 ここもまだコメント
*)
printfn "hello world";;
printfnは、続く文字列を改行付で表示するための関数です。 printfだと改行無しになります。 文字列以外も出力出来るのですが、 本題から外れるので今はそういうものだと思っていてください。 XMLドキュメントを生成するための ///から始まるコメント形式もあります。 このコメントには、すぐ後に続く、色々な定義のための説明を書きます (関数については後の章で説明します)
行コメント:XMLドキュメント用のコメント
///hello worldと表示する関数
let sayhello () = printfn "hello world";;

コメントのネスト

ブロックコメントは入れ子にすることもできます
ブロックコメント2
let print_hello =
	(* コメント開始
		(*
			入れ子になったコメントのことを
			ネストしたコメントと呼んだりする
		*)
		まだコメントの中
		ここがコメント外になる言語は多い
	*)
	printfn "hello world";;
F#のブロックコメントは賢く、コメント内のリテラルまで認識しています(f#4.1 spec 3.2) コメント内のリテラルは、通常の文字列と、逐語的文字列(verbatim string)と三重引用符で囲まれた文字列(triple-quoted-string)を認識します。 f#2.0までは有効だった次のコードも三重引用符で囲まれた文字列を認識するため、シンタックスエラーになります。
シンタックスエラーになる例
(* """ *) //三重引用符が閉じられていないのでシンタックスエラー
ブロックコメント3
(* この行はすべてコメント:let s = "*)" *)
ちょっとした裏技ですが、行コメントと組み合わせると 一定の範囲を簡単にコメントアウトできます。
TIPS
(* ←このコメントをON/OFFする
	printfn "hello world";;
// *)

ドキュメント用のコメントの使い方

-ここは、最初は飛ばしても問題ないです- ///の形式でコメントを残しておくと F#コンパイラがプログラムのコメントを抽出して XMLドキュメントとして出力する機能が使えます。 詳細は英語ですがこちらのページを確認ください。