proc set_defaults(list t) { attrib(test_proc_1, "default_arg", t); attrib(test_proc_2, "default_arg", t); attrib(test_proc_3, "default_arg", t); } proc test_all() { test_proc_1(17); test_proc_2(); test_proc_3(); } proc test_proc_1 (int i, list #) "test 1 for default argument list" { "proc test_proc_1:"; " square of first argument:", i*i; " further arguments:"; if (size(#)==0) {" none";} else { for (int k = 1; k <= size(#); k = k + 1) { " default argument at index", k, ":",#[k]; } } } proc test_proc_2 //"test 2 for default argument list" { "proc test_proc_2:"; " arguments:"; if (size(#)==0) {" none";} else { for (int k = 1; k <= size(#); k = k + 1) { " default argument at index", k, ":",#[k]; } } } proc test_proc_3 (list #) "test 3 for default argument list" { "proc test_proc_3:"; " arguments:"; if (size(#)==0) {" none";} else { for (int k = 1; k <= size(#); k = k + 1) { " default argument at index", k, ":",#[k]; } } } ring r = (0), (x, y, z), dp; list l = 4, 2, "a", 67, x; set_defaults(l); test_all(); list l; set_defaults(l); test_all(); list l = -y*y+z*x*y+x*x; set_defaults(l); test_all();