swith case in lisp -
i have function supposed convert wff in cnf, 1 part of function doesnt want work, , managed pinpoint problem, here code
(defun skole-gay (fbf &optional (var-for nil) (var-ex nil)) (if (consp fbf) (case (car fbf) (forall ;nel caso di forall salvo il prossimo elemento assieme possibile altri elementi di altri forall (skole-gay (third fbf) (cons (second fbf) var-for) var-ex)) (exist ;nel caso di exist salvo il suo elemento (skole-gay (third fbf) var-for (cons (second fbf) var-ex))) ((car var-ex) ;nel caso che trovo l'elemento salvato della exist faccio dei contrllo per vedere cosa devo fare (cond ((eql (car var-for) nil) ;se sub-for e' vuoto vuol dire che non ci sn stati forall indi devo solo inserire la const (cons (skolem-variable) (skole-gay (cdr fbf) nil var-ex))) ;dopo la costante metter il resto della fbf ((not(eql (car var-for) nil)) ;ci sono stati forall (cons (skolem-function var-for) (cons (car var-for) (skole-gay (cdr fbf) nil var-ex)))))) ((and or) ;se trovo , or not semplicemente li riscrivo e continuo con la ricorsione (list (car fbf) (skole-gay (second fbf) var-for var-ex) (skole-gay (third fbf) var-for var-ex))) ((not) ;se trovo , or not semplicemente li riscrivo e continuo con la ricorsione (list (car fbf) (skole-gay (second fbf) var-for var-ex))) (otherwise ;; e' solo 1 proposizione, la ritorno fbf)) fbf))
at 1 point im doing (case (car fbf) ; auto of fbf = ?x , 1 of cases ((car var-ex) ; @ point of them programme ?x doenst run part of programme , dont know why,
ignore comments in code because in italian
the clauses in case
form has available @ compile time. clauses not evaluated , used written in code.
in example, clause specifies (car var-ex)
list of 2 symbols: car
, var-ex
. if value either of these, clause called. uncertainty ever case, why seems ignored.
lisp
No comments:
Post a Comment