yesコマンド

30分プログラム、その707。yesコマンドを作ってみた。
yesコマンドというのは、延々とyesを出力し続けるコマンドです。一般的なUnixシステムならインストールされているはずなので、ターミナルでyesと打てば使えるはずです。
非常に簡単に作れちゃうんですが、SMLで実行可能ファイルを作る方法を試してみたかったので、作ってみました。

SMLで実行可能ファイルを作る方法

適当な関数を書いたあと、それをエクスポートする。

SMLofNJ.exportFn ("yes",yes);

すると、yes.ppc-darwinのようなファイルが生成されるので、それをsmlコマンドに渡してやると実行できる。

$ sml @SMLload=yes.ppc-darwin arg1 arg2 ...

使い方

$ ./yes
yes
yes
yes
...

$ ./yes hoge
hoge
hoge
hoge
...

ソースコード

実行用シェルスクリプト

#!/bin/sh
sml @SMLload=yes.ppc-darwin $@

本体。

fun yes (_, args) =
    let
	val msg =
	    case args  of
		[]   => "yes\n"
	      | x::_ => x ^ "\n"
    in
	while true do print msg;
	OS.Process.success
    end;

SMLofNJ.exportFn ("yes",yes);