Racket: Windows/WSL上でのRacketの起動と終了
はじめに
この記事では、WindowsおよびWSL (Windows Subsystem for Linux) 上でRacketを起動および終了する方法を詳しく説明します。
Racketの基本操作をマスターし、関数型プログラミングを通じてプログラミングスキルを向上させましょう。
Enjoy!
1. 前提
1.1 OS環境 (Windows & WSL)
Racketは複数のOSに対応しており、WindowsとWSLの両環境でRacketが使用可能です。
この記事では、WindowsとWSLで共通の操作を説明します。
1.2 Racket処理系
Windows、WSLともに、Racketをインストールしている必要があります。
まだインストールしていない場合、下記の記事を参照してRacketをインストールしてください。
-
Windows: WindowsへのRacketのインストールと設定方法 -
WSL: WSL上でRacketをセットアップする方法
1.3 CLI環境
CLI (コマンドラインインタフェイス) を使用して、Racketを起動します。
この方式は、Racketの学習と使用において非常に効果的です。
2. Windows Terminalの使い方
Windows、WSL上でCLIを使うために、Windows Terminalを使用します。
この章では、Windows Terminalの起動および終了方法について説明します。
2.1. Windows Terminalの起動、終了
Windows Terminalを起動するには、wtコマンドを使用します。
次の手順で、Windows Terminalを起動、終了します。
-
Windows Terminalの起動
[Win+R]→[wt]と入力し、Windows Terminalを起動する。
図1: Windows Terminalの起動 -
Windows Terminalの終了
コマンドラインにexitと入力して、Windows Terminalを終了する。注意:
exitで現在のタブを閉じても、ほかのタブは開いたままでWindows Terminalは終了しません。exit
2.2 WSL用コンソールの起動、終了
`WSL用プロファイルを指定して`Windows Terminalを起動することで、`WSL用コンソールを使用できます。 次の手順で、WSL用コンソールを起動、終了します:
-
Windows Terminalの起動
[Win+R]→[wt debian]と入力し、プロファイルdebianでWindows Terminalを起動する。注意:
プロファイルdebianは、自分のWSLのプロファイルに置き換える必要があります。
図2: Windows Terminal (WSL)の起動 -
Windows Terminalの終了
コマンドラインにexitと入力して、Windows Terminalを終了する。注意:
exitで現在のタブを閉じても、ほかのタブは開いたままでWindows Terminalは終了しません。exit
3. Racketの起動と終了
Racketの起動と終了の手順について詳しく説明します。
3.1 Racketの起動
コマンドラインにracketコマンドを入力することで、Racketが起動します。
プログラムファイルを指定していない場合、Racketの対話的インタフェイスであるREPL (Read-Eval-Print Loop) が起動します。
次の手順で、Racketを起動します。
-
Racketの起動
コマンドラインにracketと入力する。racket -
プロンプトの表示
REPLが起動し、プロンプトが表示される。Welcome to Racket v8.11.1 [cs]. >
3.2 Racket REPLの終了
REPLが動作している場合、REPLを終了させることでRacketも同時に終了します。
REPLを終了させるには、次の方法があります。
| 終了方法 | 説明 | 備考 |
|---|---|---|
EOF入力 |
標準入力にEOFを入力する。 |
WindowsはCtrl+Z、WSLはCtrl+DでEOFを入力できる。 |
exit関数 |
(exit)と入力し、exit関数を実行する。 |
|
exitコマンド |
,exitと入力し、exitコマンドを実行する。 |
XREPLのみ実行可能。 |
3.3 Racket REPL
Racketを引数なしで実行すると、REPL (Read-Eval-Print-Loop)という対話型インタフェイスが起動します。
REPL実行時には、コマンドラインにRacketプログラムを入力できます。
REPLは、入力されたRacketプログラムを評価して、即座に結果を返します。
これにより、Racketではコマンドラインでインタラクティブにプログラミングができます。
3.4 XREPL
XREPL (eXtended REPL) は、通常のREPLを拡張した対話型インタフェイスです。
ヘルプ、シェル、終了などの基本機能から、外部ファイルのロード、エディタでの編集、デバッグ機能など、多岐にわたるメタコマンドによる機能拡張が特徴です。
XREPLを使いこなすことで、Racketプログラミングにおける生産性が向上します。
4. XREPLの基本操作
この章では、XREPLの簡単な操作方法を紹介します。
4.1 EOFによる終了
EOFを入力して、XREPLを終了します。
次の手順で、XREPLを終了します:
-
通常の
EOF入力
Ctrl+D(Windowsでは、Ctrl+Z)を入力する。Welcome to Racket v8.11 [cs]. > [Ctrl+D] $ -
入力途中での
EOF入力
入力途中の場合は、Ctrl+Cで中断後にEOFを入力する。Welcome to Racket v8.11 [cs]. > Hell [`Ctrl+C`] ; user break [,bt for context] > [`Ctrl+D`] $ -
Ctrl+Zによるサスペンド時のEOF入力
WSL環境でCtrl+Zを入力すると、Racketがサスペンドします。
この場合は、fgコマンドでRacketに復帰後、EOFを入力します。Welcome to Racket v8.11 [cs]. > [`Ctrl+Z`] [1]+ 停止 racket $ fg racket [`Ctrl+D`] $
4.2 基本的なメタコマンド
XREPLでは、メタコマンドを使用して拡張機能を利用できます。
主なメタコマンドは、次の通りです。
| メタコマンド | 説明 | 内容 |
|---|---|---|
| ,help | ヘルプ | 使用できるメタコマンドの一覧を表示します |
| ,exit | 終了 | Racket を終了し、コマンドラインに戻ります |
| ,shell | シェル | 指定したシェルコマンドを実行します。 ディレクトリの移動、表示などに使われます |
| ,edit | 編集 | 指定したファイルを OS 指定のエディタで編集します |
これ以外にも、さまざまなメタコマンドが用意されています。
詳細は、XREPL: eXtended REPLを参照してください。
4.3 過去の値の参照
XREPLでは、過去の式の結果を^で参照できます。
^で 1つ前、^^で 2つ前の結果を参照でき、^を増やすことで、さらに 1つ前の値が参照できます。
たとえば、次のように使用します:
> "こんにちは "
"こんにちは "
> (string-append ^ ^ "世界")
"こんにちは こんにちは 世界"
おわりに
以上で、Racketの基本的な操作を説明しました。
ここまでの記事で、Racket REPLによる簡単なプログラミング、およびRacketの終了ができるようになりました。
参考資料を読むことで、Racketでの拡張されたREPLであるXREPLを使いこなすこともできるでしょう。
Racketに親しみ、関数型プログラミングの学習を続けましょう。
それでは、Happy Hacking!
技術用語と注釈
-
Racket:
Scheme言語に基づいて開発された、教育および研究向けの関数型プログラミング言語。 -
WSL(Windows Subsystem for Linux):
Windows上でLinuxのバイナリ実行ファイルをネイティブに実行できるようにする互換層。 -
REPL(Read-Eval-Print Loop):
プログラムのコードを一行ごとに入力し、それぞれの実行結果を即座に得られる対話型のプログラミング環境。 -
XREPL(eXtended REPL):
標準のREPLにエラートレース、外部ファイルの編集機能などを追加した強化版REPL -
CLI(Command Line Interface):
コマンドラインや端末を通じてコンピューターを操作するためのテキストベースのユーザーインタフェイス。 -
Windows Terminal:
複数のコマンドラインツールやシェルをタブで管理できるWindows用のターミナルアプリケーション
参考資料
Webサイト
-
The Racket Guide:
Racketの基本概念およびチュートリアルを提供するガイド。 -
XREPL: eXtended REPL:
機能拡張されたREPLに関する詳細情報を提供する資料。 -
Racket 公式ドキュメント:
Racket言語に関する包括的な情報を提供する公式ドキュメント。
Discussion