Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
(defun Object (x1 )
(defvar var1 x1)
(defun get-var1 () var1)
(defun set-var1 (x) (setf var1 x))
(defun dispatch (m)
(cond ((EQ m 'get-var1) (function get-var1))
((EQ m 'set-var1) (function set-var1))
)
)
(function dispatch)
)
(defun main ()
(defparameter Obj1 (Object " Hello world!!! " ))
(format t "get text result:~s~%" (funcall (funcall Obj1 'get-var1)))
(funcall (funcall Obj1 'set-var1) "Hello habra!!!")
(format t "get text result:~s\~%" (funcall (funcall Obj1 'get-var1)))
)
$ clisp -c prog1.lisp
$ clisp -q -q -on-error abort -x '(progn (load "prog1") (main) (quit))'
(defun Object (x1 )
(let ((var1 x1))
(labels ((get-var1 () var1)
(set-var1 (x) (setf var1 x))
(dispatch (m)
(cond ((EQ m 'get-var1) (function get-var1))
((EQ m 'set-var1) (function set-var1)))))
(function dispatch))))
Объектно ориентированный подход на функциях в Scheme