> 1 <

Автор Сообщение

Yana

Members


Статус

1 сообщений

Где: ---
Род занятий:
Возраст:

#2336   2010-06-08 19:20 GMT+3 часа(ов)      
Не могу понять почему не работает

(defun eval1(forma &optional (svyazi nil))
(cond
((atom forma) ; forma atomarnaya
(cond
((eq forma 't1) 't1)
((eq forma 'nil1) 'nil1)
((numberp forma) forma)
((car (assoc forma svyazi)))
(t (format t
"~%Y atoma net svyazi: ~S"
forma))
;;golova formi-atom
((atom (car forma))
(cond
((eq (car forma) 'quote1)
(cadr forma))
((eq (car forma) 'cond1)
(eval-cond (cdr forma) svyazi))
;;vizov function
((get (car forma) 'fn)
(apply1 (get (car forma) 'fn)
(eval-spisok (cdr forma)
svyazi)
svyazi))
;; vstroennaya function
(t (apply1 (car forma)
(eval-spisok (cdr forma)
svyazi)
svyazi))))
;;LAMBDA1-predlogenie
(t (apply1 (car forma)
(eval-spisok (cdr forma) svyazi)
svyazi))))))
(defun eval-cond (vetvi contekst)
(cond
((null vetvi) 'nil1)
((not (eq (eval1 (caar vetvi) contekst)
'nil1))
(eval1 (cadar vetvi) contekst))
(t (eval-cond (cdr vetvi) contekst))))
(defun apply1 (function argumenti svyazi)
(cond ((atom function);bazovie function
(cond
((eq function 'car1)
(cond ((eq (car argumenti) 'nil1)
'nil1)
;;golova nil1-eto nil1
(t (caar argumenti))))
((eq function 'cdr1)
(cond ((eq(car argumenti) 'nil1)
'nil1)
;;hvost nil1-eto nil1
((null (cdar argumenti))
'nil1)
(t(cdar argumenti))))
((eq function 'cons1)
(cond ((eq(cadr argumenti)
'nil1)
(list (car argumenti)))
(t (cons (car argumenti)
(cadr argumenti)))))
((eq function 'atom1)
(cond ((atom(car argumenti))
't1)
(t 'nil1)))
((eq function 'equal1)
(cond ((equal(car argumenti)
(cadr argumenti))
't1)
(t 'nil1)))
(t(format t "~%neizvestnaya function:
~S" function))))
((eq (car function) 'lambda1)
;;lambda-vizov
(eval1 (caddr function)
(sozdai-svyazi (cadr function)
argumenti svyazi)))
(t(format t
"~%eto ne lambda-vizov: ~S"
function))))
;;Okrugenie novimi parami imya-znachenie
(defun sozdai-svyazi
(formalnie facticheskie okrugenie)
(cond
((null formalnie) okrugenie)
(t (acons (car formalnie)
(car facticheskie)
(sozdai-svyazi(cdr formalnie)
(cdr facticheskie)
okrugenie)))))
(defun eval-spisok(nevichislennie svyazi)
(cond
((null nevichislennie) nil)
(t (cons
(eval1 (car nevichislennie) svyazi)
(eval-spisok (cdr nevichislennie)
svyazi)))))

при вызове (eval1 '(coons(quote1 a) (quote1 (b c)))) должно выводиться сообщение Неизвестная функция coons-а почему то не выводиться...

misha

Moderators


Статус

1275 сообщений
http://racket-lang.org/
Где: Yemen
Род занятий:
Возраст:

#2343   2010-06-09 11:03 GMT+3 часа(ов)      
А отформатировать исходник?)
> 1 <


Онлайн :

0 пользователь(ей), 37 гость(ей) :