Lisp で Hello, World! を出力する方法
1. はじめに
Lisp(リスプ) は、1958年に開発されたプログラミング言語で、関数型プログラミング や メタプログラミング の分野で強力な機能を持っています。
本記事では、Lisp で Hello, World! を出力する基本的な方法から、Lisp の特徴について詳しく解説します。
2. Lisp とは?
Lisp は、以下の特徴を持つ言語です。
- S 式(S-Expression): Lisp のコードはすべてリストとして記述され、
(関数 引数1 引数2 ...)
という形式を取る。 - 関数型プログラミング: 関数を第一級オブジェクトとして扱い、コードをより抽象化できる。
- メタプログラミング: 自身のコードをデータとして扱い、動的に変更が可能。
- GC(ガベージコレクション)付き: メモリ管理を自動化。
Lisp にはいくつかの方言がありますが、代表的なものとして以下の 3 つがあります。
Lisp 方言 | 特徴 |
---|---|
Common Lisp | 実用性が高く、多くのライブラリがある |
Scheme | シンプルで教育用途によく使われる |
Clojure | JVM 上で動作し、関数型プログラミングに最適 |
本記事では Common Lisp を使用します。
3. Hello, World! の基本
Lisp では、print
や format
を使って文字列を出力できます。
方法1: print
を使う
(print "Hello, World!")
実行結果
"Hello, World!"
print
は文字列を出力しますが、改行され、ダブルクォート("
)が含まれます。
方法2: format
を使う(推奨)
(format t "Hello, World!~%")
実行結果
Hello, World!
ポイント
- t
は標準出力(*standard-output*
)を意味します。
- ~%
は改行コードです。
4. REPL(対話型環境)で実行
Lisp には REPL(Read-Eval-Print Loop) という対話型環境があり、インタラクティブにコードを実行できます。
Common Lisp の REPL を起動する
Linux/macOS では sbcl
(Steel Bank Common Lisp)をインストールし、REPL を開きます。
sbcl
REPL が起動したら、format
を使って Hello, World! を出力できます。
(format t "Hello, World!~%")
実行結果
Hello, World!
Windows では、CLISP などをインストールして同様に実行できます。
5. スクリプトとして実行
Lisp のコードを .lisp
ファイルとして保存し、スクリプトとして実行できます。
1. ファイルを作成
hello.lisp
というファイルを作成し、以下のコードを記述します。
(format t "Hello, World!~%")
2. コマンドラインで実行
sbcl --script hello.lisp
または、CLISP を使う場合:
clisp hello.lisp
6. 高度な出力方法
Lisp では、文字列の動的な生成や装飾を行うことも可能です。
6.1 変数を使う
(let ((message "Hello, Lisp!")) (format t "~A~%" message))
実行結果
Hello, Lisp!
6.2 複数の変数をフォーマット
(let ((name "Alice") (language "Lisp")) (format t "Hello, ~A! Welcome to ~A.~%" name language))
実行結果
Hello, Alice! Welcome to Lisp.
6.3 色付きの出力
ターミナルで色をつけて出力するには、ANSI エスケープシーケンスを使います。
(format t "~C[31mHello, Red!~C[0m~%" #\ESC #\ESC)
実行結果(赤色で出力)
Hello, Red!
7. まとめ
本記事では、Lisp で「Hello, World!」を出力する方法について詳しく解説しました。
ポイント
✅ print
や format
を使って出力
✅ REPL(対話型環境)で実行可能
✅ .lisp
ファイルを作成してスクリプトとして実行
✅ 変数を使った動的な出力が可能
✅ ANSI コードを使って色付きの出力もできる
次に学ぶべきこと
- Lisp のリスト操作(
car
,cdr
,cons
) - 関数の定義と再帰処理
- マクロを使ったコード生成
- オブジェクト指向(CLOS: Common Lisp Object System)
参考リンク - Common Lisp 公式ドキュメント - SBCL(Steel Bank Common Lisp) - CLISP(Common Lisp Interpreter)
Lisp は学習コストが高いものの、強力なメタプログラミング機能を備えており、関数型プログラミングや AI 開発に適した言語です。ぜひ実際に試してみてください!