rember*
|
function rember_star
($a, $l)
{return
is_nulll($l) ? []
: (is_atom(car($l)) ?
is_eq(car($l), $a) ? rember_star($a, cdr($l))
: cons(car($l), rember_star($a, cdr($l)))
: cons(rember_star($a, car($l)), rember_star($a, cdr($l))));
}
|
insertR*
|
function insert_right_star
($new_s, $old_s, $l)
{return
is_nulll($l) ? []
: (is_atom(car($l)) ?
is_eq(car($l), $old_s) ?
cons($old_s, cons($new_s, insert_right_star($new_s, $old_s, cdr($l))))
: cons(car($l), insert_right_star($new_s, $old_s, cdr($l)))
: cons(insert_right_star($new_s, $old_s, car($l)),
insert_right_star($new_s, $old_s, cdr($l))));
}
|
occur*
|
function occur_star
($a, $l)
{return
is_nulll($l) ? 0
: (is_atom(car($l)) ?
is_eq(car($l), $a) ? add1(occur_star($a, cdr($l)))
: occur_star($a, cdr($l))
: plus(occur_star($a, car($l)), occur_star($a, cdr($l))));
}
|
subst*
|
function subst_star
($new_s, $old_s, $l)
{return
is_nulll($l) ? []
: (is_atom(car($l)) ?
is_eq(car($l), $old_s) ?
cons($new_s, subst_star($new_s, $old_s, cdr($l)))
: cons(car($l), subst_star($new_s, $old_s, cdr($l)))
: cons(subst_star($new_s, $old_s, car($l)),
subst_star($new_s, $old_s, cdr($l))));
}
|
insertL*
|
function insert_left_star
($new_s, $old_s, $l)
{return
is_nulll($l) ? []
: (is_atom(car($l)) ?
is_eq(car($l), $old_s) ?
cons($new_s, cons($old_s, insert_left_star($new_s, $old_s, cdr($l))))
: cons(car($l), insert_left_star($new_s, $old_s, cdr($l)))
: cons(insert_left_star($new_s, $old_s, car($l)),
insert_left_star($new_s, $old_s, cdr($l))));
}
|
member*
|
function member_star
($a, $l)
{return
is_nulll($l) ? FALSE
: (is_atom(car($l)) ? is_eq(car($l), $a) || member_star($a, cdr($l))
: member_star($a, car($l)) || member_star($a, cdr($l)));
}
|
leftmost
|
function leftmost
($l)
{return
is_nulll($l) ? NULL
: (is_atom(car($l)) ? car($l)
: leftmost(car($l)));
}
|
equal?
|
function is_equal
($s1, $s2)
{return
is_atom($s1) && is_atom($s2) ? is_eqan($s1, $s2)
: (is_atom($s1) || is_atom($s2) ? FALSE
: is_eqlist($s1, $s2));
}
|
eqlist?
|
function is_eqlist
($l1, $l2)
{return
is_nulll($l1) && is_nulll($l2) ? TRUE
: (is_nulll($l1) || is_nulll($l2) ? FALSE
: is_equal(car($l1), car($l2)) && is_eqlist(cdr($l1), cdr($l2)));
}
|
rember2
|
function rember2
($s, $l)
{return
is_nulll($l) ? []
: (is_equal(car($l), $s) ? cdr($l)
: cons(car($l), rember2($s, cdr($l))));
}
|