The Haskell 98 Report
top | back | next | contents | function index


9.6  文藝的コメント

「文藝的コメント」という仕様は,最初 Richard Bird と Philip Wadler が Orwell のために開発した.これもやはり Donald Knuth の「文藝的プロ グラミング」に触発されたものであり,Haskell のソースコードの別の書き 方である.「文藝スタイル」はコメントをデフォルトにすることでこれを強 調するものだ.行頭の文字が ">" である行はプログラムの部分 として処理され,それ以外の行はすべてコメントとなる.

プログラム本体は ">" ではじまる行のみから復元され,行 頭の ">" は空白に置き換る.結果のテキストに 9 で述べたレイアウトとコメントの ルールが適用される.

あやまって,">" を付けわすれたのかどうかを捕捉するため に,空行ではないコメントラインに隣接するプログラム行はエラーとなる. この場合,白空白のみからなる行は空行と見なす.

仕様としてはこのコメントのスタイルであることはファイルの拡張子で示 す.拡張子が ".hs" である場合には通常の Haskell ファイルであ り,".lhs" である場合には文藝的 Haskell ファイルである.この スタイルを用いると単純な階乗を計算するプログラムは以下のようになる.

   This literate program prompts the user for a number
   and prints the factorial of that number:

> main :: IO ()

> main = do putStr "Enter a number: "
>           l <- readLine
>           putStr "n!= "
>           print (fact (read l))
          
  This is the factorial function.

> fact :: Integer -> Integer
> fact 0 = 1
> fact n = n * fact (n-1)

文藝的プログラミングのもう1つのスタイルは,LaTeX組版システムを使う のに特に適している.この仕様では,\begin{code}\end{code} という区切り子に囲まれた部分だけをプログラム本文 として扱い,それ以外はコメントとなる.より正確には,

これらの区切り子の前後に空白行を挿入する必要はない.それでもスタイ ルとしては望ましいものである.例としては次のようになる.

\documentstyle{article}

\begin{document}

\section{Introduction}

This is a trivial program that prints the first 20 factorials.

\begin{code}
main :: IO ()
main =  print [ (n, product [1..n]) | n <- [1..20]]
\end{code}

\end{document}

このスタイルでも同じファイル拡張子を使う.2つのスタイルを1つのファ イルの中で混在させることは推奨しない.


The Haskell 98 Report
top | back | next | contents | function index
December 2002