The Little PHPer - 3. Cons the Magnificent May 5, 2018 Scheme PHP [Source Code] rember function rember ($s, $l) {return is_nulll($l) ? [] : (is_eq(car($l), $s) ? cdr($l) : cons(car($l), rember($s, cdr($l)))); } firsts function firsts ($l) {return is_nulll($l) ? [] : cons(car(car($l)), firsts(cdr($l))); } insertR function insert_right ($new_s, $old_s, $l) {return is_nulll($l) ? [] : (is_eq(car($l), $old_s) ? cons($old_s, cons($new_s, cdr($l))) : cons(car($l), insert_right($new_s, $old_s, cdr($l)))); } insertL function insert_left ($new_s, $old_s, $l) {return is_nulll($l) ? [] : (is_eq(car($l), $old_s) ? cons($new_s, $l) : cons(car($l), insert_left($new_s, $old_s, cdr($l)))); } subst function subst ($new_s, $old_s, $l) {return is_nulll($l) ? [] : (is_eq(car($l), $old_s) ? cons($new_s, cdr($l)) : cons(car($l), subst($new_s, $old_s, cdr($l)))); } subst2 function subst2 ($new_s, $old_s1, $old_s2, $l) {return is_nulll($l) ? [] : (is_eq(car($l), $old_s1) || is_eq(car($l), $old_s2) ? cons($new_s, cdr($l)) : cons(car($l), subst2($new_s, $old_s1, $old_s2, cdr($l)))); } multirember function multirember ($s, $l) {return is_nulll($l) ? [] : (is_eq(car($l), $s) ? multirember($s, cdr($l)) : cons(car($l), multirember($s, cdr($l)))); } multiinsertR function multiinsert_right ($new_s, $old_s, $l) {return is_nulll($l) ? [] : (is_eq(car($l), $old_s) ? cons($old_s, cons($new_s, multiinsert_right($new_s, $old_s, cdr($l)))) : cons(car($l), multiinsert_right($new_s, $old_s, cdr($l)))); } multiinsertL function multiinsert_left ($new_s, $old_s, $l) {return is_nulll($l) ? [] : (is_eq(car($l), $old_s) ? cons($new_s, cons($old_s, multiinsert_left($new_s, $old_s, cdr($l)))) : cons(car($l), multiinsert_left($new_s, $old_s, cdr($l)))); } multisubst function multisubst ($new_s, $old_s, $l) {return is_nulll($l) ? [] : (is_eq(car($l), $old_s) ? cons($new_s, multisubst($new_s, $old_s, cdr($l))) : cons(car($l), multisubst($new_s, $old_s, cdr($l)))); }