Scheme scripting
amb てこういう使い方するもんなんだろうか。それ専用の (効率的な) 関数がありそうだけど、見当たらないし。assert っていうのは SICP でいう require。
(guard (exc ((eq? exc 'no-solution) #t)) (let ((type (amb "Syntax" "Procedure")) (args (amb "Fixed" "Variadic")) (tail (amb "" "TailRec")) (mand (apply amb (iota 16)))) (my-print-routine type args tail mand) (assert #f))) => 出力が void Scm_RegisterSyntaxFixed0(...){...} void Scm_RegisterSyntaxFixed1(...){...} void Scm_RegisterSyntaxFixed2(...){...} : void Scm_RegisterProcedureFixed0(...){...} :
まぁ欲しいもんが出るからいっか。