public function map(array $args, Scheme_Env $env) { $this->requireExactly(2, $args); $this->requireList($args[1]); list($func, $list) = $args; $interp = $env->getInterpreter(); $result = array(); foreach ($list->listToArray() as $value) { $result[] = $interp->evaluate($env, Scheme_Utils::mkList($func, $value)); } return Scheme_Utils::arrayToList($result); }