F#のコメントの種類

コメントとは、プログラムへの注釈のことです。 プログラムの実行自体には影響はありません。 F#では、次の2種類(+1種類)のコメント法があります(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#のブロックコメントは賢く、コメント内のリテラルまで認識しています(3.2 note) コメント内のリテラルは、 通常の文字列と、逐語的文字列(verbatim string)を認識します。
ブロックコメント3
(* この行はすべてコメント:let s = "*)" *)
ちょっとした裏技ですが、行コメントと組み合わせると 一定の範囲を簡単にコメントアウトできます。
TIPS
(* ←このコメントをON/OFFする
	printfn "hello world";;
// *)

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

-ここは、最初は飛ばしても問題ないです- ///の形式でコメントを残しておくと F#コンパイラがプログラムのコメントを抽出して XMLドキュメントとして出力する機能が使えます。 F#のデザインガイドのドラフト(2010 august版)(pdf注意)は この形式のコメントを使うように推奨しています。
a.fs:コメント元のプログラム
#indent "off"

///数値の二乗を返す
let square x =x*x;;
printfn "%d" (square 10);;
プログラム内容については説明しませんが これは数値の二乗を返すプログラムです。 これをXMLとして出力するためには コマンドプロンプトで次のようにします
プログラムとしての出力
> fsc --doc:doc.xml a.fs
a.fsが対象となるプログラムで doc.xmlが出力のXMLファイル名です これを実行すると、こんな感じのファイルが出来上がります。
出力されたXMLファイル
<?xml version="1.0" encoding="utf-8"?>
<doc>
<assembly><name>a</name></assembly>
<members>
<member name="M:A.square(System.Int32)">
<summary>
数値の二乗を返す
</summary>
</member>
<member name="T:A">

</member>
</members>
</doc>
このXMLファイルからAPIリファレンスを生成するためのツールとして NDocというツールがあります。