package jscheme;
/** @author Peter Norvig, peter@norvig.com http://www.norvig.com
* Copyright 1998 Peter Norvig, see http://www.norvig.com/license.html **/
public abstract class Procedure extends SchemeUtils {
String name = "anonymous procedure";
public String toString() { return "{" + name + "}"; }
public abstract Object apply(Scheme interpreter, Object args);
/** Coerces a Scheme object to a procedure. **/
static Procedure proc(Object x) {
if (x instanceof Procedure) return (Procedure) x;
else return proc(error("Not a procedure: " + stringify(x)));
}
}