The Little PHPer - 6. Shadows May 20, 2018 Scheme PHP [Source Code] numbered? function is_numbered ($aexp) {return is_atom($aexp) ? is_number($aexp) : ( is_eq(car(cdr($aexp)), '+') || is_eq(car(cdr($aexp)), 'x') || is_eq(car(cdr($aexp)), '^')) && is_numbered(car($aexp)) && is_numbered(car(cdr(cdr($aexp)))); } value function value ($nexp) {return is_atom($nexp) ? $nexp : (is_eq(car(cdr($nexp)), '+') ? plus(value(car($nexp)), value(car(cdr(cdr($nexp))))) : (is_eq(car(cdr($nexp)), 'x') ? x(value(car($nexp)), value(car(cdr(cdr($nexp))))) : power(value(car($nexp)), value(car(cdr(cdr($nexp))))))); } function value ($nexp) {return is_atom($nexp) ? $nexp : (is_eq(operator($nexp), '+') ? plus(value(first_sub_exp($nexp)), value(second_sub_exp($nexp))) : (is_eq(operator($nexp), 'x') ? x(value(first_sub_exp($nexp)), value(second_sub_exp($nexp))) : power(value(first_sub_exp($nexp)), value(second_sub_exp($nexp))))); } 2nd-sub-exp function second_sub_exp ($aexp) {return car(cdr(cdr($aexp))); } 1st-sub-exp // prefix function first_sub_exp ($aexp) {return car(cdr($aexp)); } // infix use function car as first_sub_exp; operator // prefix use function car as operator; // infix function operator ($nexp) {return car(cdr($nexp)); } sero? function is_sero ($n) {return is_nulll($n); } edd1 function edd1 ($n) {return cons([], $n); } zub1 use function cdr as zub1; blus function blus ($n, $m) {return is_sero($m) ? $n : edd1(blus($n, zub1($m))); }