Ejemplo n.º 1
0
 /**
  * 適応
  */
 private static function apply($function, $args, $env)
 {
     if (Object::is_subr($function) || Object::is_expr($function)) {
         $args = self::evlis($args, $env);
     }
     // SUBR
     if (Object::is_subr($function)) {
         return $function->exec($args);
     }
     // FSUBR
     if (Object::is_fsubr($function)) {
         return $function->exec($args, $env);
     }
     // EXPR
     if (Object::is_expr($function)) {
         $new_env = Env::new_expr_instance($args, $function);
         return SCM_begin($function->forms, $new_env);
     }
 }