--- breaks: false tags: public-tech --- # 対話型インタプリタのディレクティブ(`#...`)が便利 この記事は [OCaml Tips Advent Calendar 2022](https://adventar.org/calendars/8396) の15日目です。 `ocaml` コマンドや `utop` コマンドで起動できる対話型インタプリタでは `#` から始まるディレクティブを使うことで、インタプリタに特殊な動作をさせる ことができます。一覧は公式ドキュメントに[あります](https://v2.ocaml.org/manual/toplevel.html)が、 その中からいくつか便利なものを抜粋します。 - `#quit;;` - インタプリタを終了させる[^quit]。 - `#help;;` - ディレクティブの一覧を表示する。 - `#use "file-name";;` - 指定した OCaml コードをインタプリタ内に読み込む。`dune utop` を使うまでもないときに便利。 - `#trace function-name;;` - 指定した関数のトレース(呼び出し時の引数と戻り値)を出力する。(単純な)再帰関数の挙動を調べるのに便利で、例えば次のように使用する。 ``` # let rec fib n = if n <= 1 then n else fib (n - 1) + fib (n - 2);; val fib : int -> int = <fun> # #trace fib;; fib is now traced. # fib 10;; # #untrace fib;; (* トレースをやめる *) ``` [^quit]: ほかに `Ctrl+D` でも(EOF を発行して)終了させられます。 `utop` コマンドでのみ使えるディレクティブとしては、次のようなものがあります。 - `#require "package-name";;` - 指定した(外部)パッケージを読み込む。 ## 参考 - https://v2.ocaml.org/manual/toplevel.html
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up