この最上位関数は、任意の数の引き数を受け取れるようにプログラムすべきである。 その命令行の上の引き数はそれぞれ、強制的に文字列にされ、最上位関数に渡される。 以下に示すプログラムは、最初の引き数に与えられたファイルからくり返し読み込み、 2番目の引き数のファイルに整形表示する。
(defun pprint-copy (infile outfile) (with-open-file (in infile) (with-open-file (out outfile :direction :output) (let ((eof (cons nil nil)) (exp)) (while (not (eq (setq exp (read in nil eof)) eof)) (pprint exp out)))))) (defun pprint-copy-top (&rest argv) (when (= (length argv) 2) (pprint-copy (first argv) (second argv))))
一度これらの関数をEuslispの中に定義すれば、 (save "ppcopy" "" 'pprint-copy-top)でppcopyという名のUNIXで実行 可能な命令を作る。
Solaris上のEuslispにおいて、saveがないので、 最上位評価関数はこの手法では変更できない。 代わりに、独自の最上位評価関数を定義するためにlib/eusrt.lを 修正し、*toplevel*に設定することができる。 lib/eusrt.lには、Euslispの起動時に評価される初期化手続きを 定義している。