> 1 <

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

Яков Замир Кацман (нью)

Members


Статус

50 сообщений

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

#7853   2018-03-08 22:55 GMT+3 часа(ов)      
Пакет bob видит ясно символ *p* и может его менять.
Как ему это удается и зачем тогда export и import вообще?
(Package BOB clear see symbol *p* and can changing 'plist' elements.
How this makes and what are role of export and import at all?


 
(defpackage :tom
(:use :common-lisp)
(:export #:main #:init *p*)
)
 
(in-package :tom)
(defvar *p*)
(defun init()
(setf *p*
'(
:one "1"
:two "2"
:free "3"
)
)
)
(defun main()
(format t "~% To show element:: ~a ;
To show all plist:: ~a ~%"

(getf *p* :free)
*p*
)
 
)
 
(defpackage :bob
(:use :common-lisp)
(:export #:setval)
(:import-from :tom *p*)
 
)
 
(in-package :bob)
(defun setval()
(setf (getf tom::*p* :free) "1001")
)
 
 
 
 
(in-package :bob)
(tom::init)
(tom::main)
(bob::setval)
(tom::main)
 



* (load "tom.lsp")
T
* (load "bob.lsp")
T
* (in-package :bob)
(tom::init)
(tom::main)
(bob::setval)
(tom::main)

#<PACKAGE "BOB">
(:ONE "1" :TWO "2" :FREE "3")
To show element:: 3 ; To show all plist:: (ONE 1 TWO 2 FREE 3)
NIL
"1001"
To show element:: 1001 ; To show all plist:: (ONE 1 TWO 2 FREE 1001)
NIL

отредактировал(а) Яков Замир Кацман (нью): 2018-03-09 14:38 GMT+3 часа(ов)

skelter

Members


Статус

56 сообщений

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

#7854   2018-03-09 01:53 GMT+3 часа(ов)      
Как проверить? Я сохранил в файл и загрузил его:
CL-USER> (load "foo.lisp")
 
; file: /home/me/foo.lisp
; in: DEFUN SETVAL
; (SETF (GETF BOB::*P* :FREE) "1001")
; --> LET* LET
; ==>
; (SETQ BOB::*P* #:NEW1)
;
; caught WARNING:
; undefined variable: *P*
;
; compilation unit finished
; Undefined variable:
; *P*
; caught 1 WARNING condition
 
To show element:: 3 ;
 
To show all plist:: (ONE 1 TWO 2 FREE 3)
While evaluating the form starting at line 55, column 0
of #P"/home/me/foo.lisp":The variable BOB::*P* is unbound.
[Condition of type UNBOUND-VARIABLE]

отредактировал(а) skelter: 2018-03-09 04:19 GMT+3 часа(ов)

Яков Замир Кацман (нью)

Members


Статус

50 сообщений

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

#7855   2018-03-09 11:13 GMT+3 часа(ов)      
Проверил. Похоже символ сохранился (более менее случайно) в окружении-сеансе slime. Действительно unbound. Вопрос снят.
> 1 <


Онлайн :

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




Реклама на сайте: