🎾

Racket: Windows/WSL上でのRacketの起動と終了

2023/09/09に公開

はじめに

この記事では、WindowsおよびWSL (Windows Subsystem for Linux) 上でRacketを起動および終了する方法を詳しく説明します。

Racketの基本操作をマスターし、関数型プログラミングを通じてプログラミングスキルを向上させましょう。
Enjoy!

1. 前提

1.1 OS環境 (Windows & WSL)

Racketは複数のOSに対応しており、WindowsWSLの両環境でRacketが使用可能です。
この記事では、WindowsWSLで共通の操作を説明します。

1.2 Racket処理系

WindowsWSLともに、Racketをインストールしている必要があります。
まだインストールしていない場合、下記の記事を参照してRacketをインストールしてください。

1.3 CLI環境

CLI (コマンドラインインタフェイス) を使用して、Racketを起動します。
この方式は、Racketの学習と使用において非常に効果的です。

2. Windows Terminalの使い方

WindowsWSL上でCLIを使うために、Windows Terminalを使用します。
この章では、Windows Terminalの起動および終了方法について説明します。

2.1. Windows Terminalの起動、終了

Windows Terminalを起動するには、wtコマンドを使用します。
次の手順で、Windows Terminalを起動、終了します。

  1. Windows Terminalの起動
    [Win+R]→[wt]と入力し、Windows Terminalを起動する。

    Windows Terminal
    図1: Windows Terminalの起動

  2. Windows Terminalの終了
    コマンドラインにexitと入力して、Windows Terminalを終了する。

    注意:
    exitで現在のタブを閉じても、ほかのタブは開いたままでWindows Terminalは終了しません。

    exit
    

2.2 WSL用コンソールの起動、終了

`WSL用プロファイルを指定して`Windows Terminalを起動することで、`WSL用コンソールを使用できます。 次の手順で、WSL用コンソールを起動、終了します:

  1. Windows Terminalの起動
    [Win+R]→[wt debian]と入力し、プロファイルdebianWindows Terminalを起動する。

    注意:
    プロファイルdebianは、自分のWSLのプロファイルに置き換える必要があります。

    Windows Terminal
    図2: Windows Terminal (WSL)の起動

  2. Windows Terminalの終了
    コマンドラインにexitと入力して、Windows Terminalを終了する。

    注意:
    exitで現在のタブを閉じても、ほかのタブは開いたままでWindows Terminalは終了しません。

    exit
    

3. Racketの起動と終了

Racketの起動と終了の手順について詳しく説明します。

3.1 Racketの起動

コマンドラインにracketコマンドを入力することで、Racketが起動します。
プログラムファイルを指定していない場合、Racketの対話的インタフェイスであるREPL (Read-Eval-Print Loop) が起動します。

次の手順で、Racketを起動します。

  1. Racketの起動
    コマンドラインにracketと入力する。

    racket
    
  2. プロンプトの表示
    REPLが起動し、プロンプトが表示される。

    Welcome to Racket v8.11.1 [cs].
    >
    
    

3.2 Racket REPLの終了

REPLが動作している場合、REPLを終了させることでRacketも同時に終了します。

REPLを終了させるには、次の方法があります。

終了方法 説明 備考
EOF入力 標準入力にEOFを入力する。 WindowsCtrl+ZWSLCtrl+DEOFを入力できる。
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を終了します:

  1. 通常のEOF入力
    Ctrl+D (Windowsでは、Ctrl+Z)を入力する。

    Welcome to Racket v8.11 [cs].
    > [Ctrl+D]
    
    $
    
  2. 入力途中でのEOF入力
    入力途中の場合は、Ctrl+Cで中断後にEOFを入力する。

    Welcome to Racket v8.11 [cs].
    > Hell [`Ctrl+C`]
    ; user break [,bt for context]
    > [`Ctrl+D`]
    
    $
    
  3. 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サイト

GitHubで編集を提案

Discussion