Add or special form
use high-order function abstract lookup and set-var-val! and fix bug