Current namespace at the repl
Is there a function (or would it be easy to access the internals to write one) to find out what the currently active namespace is at the repl. Ie after entering a few (namespace ("foo#")) expressions it would be nice to be able check what the current namespace is with eg (current-namespace) --> "foo#" Thanks Duncan
Afficher les réponses par date
A bit of a hack... Try: (##caddr (##decompile (##lambda () ||))) You can define a macro based on that idea. Marc
On Jul 28, 2016, at 12:09 PM, Duncan Watts <djmwatts@gmail.com> wrote:
Is there a function (or would it be easy to access the internals to write one) to find out what the currently active namespace is at the repl. Ie after entering a few (namespace ("foo#")) expressions it would be nice to be able check what the current namespace is with eg (current-namespace) --> "foo#"
Thanks Duncan _______________________________________________ Gambit-list mailing list Gambit-list@iro.umontreal.ca https://webmail.iro.umontreal.ca/mailman/listinfo/gambit-list
Marc, Could you explain this a bit? Thanks, Steve From: Marc Feeley <feeley@iro.umontreal.ca> To: Duncan Watts <djmwatts@gmail.com> Cc: Gambit-list@iro.umontreal.ca Sent: Thursday, July 28, 2016 4:22 AM Subject: Re: [gambit-list] Current namespace at the repl A bit of a hack... Try: (##caddr (##decompile (##lambda () ||))) You can define a macro based on that idea. Marc
On Jul 28, 2016, at 12:09 PM, Duncan Watts <djmwatts@gmail.com> wrote:
Is there a function (or would it be easy to access the internals to write one) to find out what the currently active namespace is at the repl. Ie after entering a few (namespace ("foo#")) expressions it would be nice to be able check what the current namespace is with eg (current-namespace) --> "foo#"
Thanks Duncan _______________________________________________ Gambit-list mailing list Gambit-list@iro.umontreal.ca https://webmail.iro.umontreal.ca/mailman/listinfo/gambit-list
_______________________________________________ Gambit-list mailing list Gambit-list@iro.umontreal.ca https://webmail.iro.umontreal.ca/mailman/listinfo/gambit-list
Steve, maybe I can help. ##decompile retrieve the source code of a procedure (if available):
(##decompile (##lambda () test)) (lambda () test)
If you change the name-space with:
(namespace ("test-namespace#"))
decompile yields:
(##decompile (##lambda () test)) (lambda () test-namespace#test)
That means you have to strip the symbol suffix `test` to get the name-space. If you use the empty symbol, denoted by ||, you get the name-space symbol directly:
(##decompile (##lambda () ||)) (lambda () test-namespace#)
With this information, one can define the following macro:
(define-macro (##current-namespace) (##symbol->string (eval (##quote (##caddr (##decompile (##lambda () ||)))))))
For e newly started gsi you get:
(##current-namespace) ""
If you change the name-space you get:
(namespace ("test-namespace#")) (##current-namespace) "test-namespace#"
HTH, Gerald Am 28.07.2016 um 19:12 schrieb Steve Graham:
Marc, Could you explain this a bit?
Thanks, Steve
From: Marc Feeley <feeley@iro.umontreal.ca> To: Duncan Watts <djmwatts@gmail.com> Cc: Gambit-list@iro.umontreal.ca Sent: Thursday, July 28, 2016 4:22 AM Subject: Re: [gambit-list] Current namespace at the repl
A bit of a hack... Try:
(##caddr (##decompile (##lambda () ||)))
You can define a macro based on that idea.
Marc
On Jul 28, 2016, at 12:09 PM, Duncan Watts <djmwatts@gmail.com> wrote:
Is there a function (or would it be easy to access the internals to write one) to find out what the currently active namespace is at the repl. Ie after entering a few (namespace ("foo#")) expressions it would be nice to be able check what the current namespace is with eg (current-namespace) --> "foo#"
Thanks Duncan _______________________________________________ Gambit-list mailing list Gambit-list@iro.umontreal.ca https://webmail.iro.umontreal.ca/mailman/listinfo/gambit-list
Gambit-list mailing list Gambit-list@iro.umontreal.ca https://webmail.iro.umontreal.ca/mailman/listinfo/gambit-list
_______________________________________________ Gambit-list mailing list Gambit-list@iro.umontreal.ca https://webmail.iro.umontreal.ca/mailman/listinfo/gambit-list
Thanks, Gerald. Very interesting. From: Gerald Klix <gambit.00@klix.ch> To: gambit-list@iro.umontreal.ca Sent: Thursday, July 28, 2016 11:00 AM Subject: Re: [gambit-list] Current namespace at the repl Steve, maybe I can help. ##decompile retrieve the source code of a procedure (if available): > (##decompile (##lambda () test)) (lambda () test) If you change the name-space with:
(namespace ("test-namespace#"))
decompile yields:
(##decompile (##lambda () test)) (lambda () test-namespace#test)
That means you have to strip the symbol suffix `test` to get the name-space. If you use the empty symbol, denoted by ||, you get the name-space symbol directly:
(##decompile (##lambda () ||)) (lambda () test-namespace#)
With this information, one can define the following macro:
(define-macro (##current-namespace) (##symbol->string (eval (##quote (##caddr (##decompile (##lambda () ||)))))))
For e newly started gsi you get:
(##current-namespace) ""
If you change the name-space you get:
(namespace ("test-namespace#")) (##current-namespace) "test-namespace#"
HTH, Gerald Am 28.07.2016 um 19:12 schrieb Steve Graham: Marc, Could you explain this a bit? Thanks, Steve From: Marc Feeley <feeley@iro.umontreal.ca> To: Duncan Watts <djmwatts@gmail.com> Cc: Gambit-list@iro.umontreal.ca Sent: Thursday, July 28, 2016 4:22 AM Subject: Re: [gambit-list] Current namespace at the repl A bit of a hack... Try: (##caddr (##decompile (##lambda () ||))) You can define a macro based on that idea. Marc On Jul 28, 2016, at 12:09 PM, Duncan Watts <djmwatts@gmail.com> wrote: Is there a function (or would it be easy to access the internals to write one) to find out what the currently active namespace is at the repl. Ie after entering a few (namespace ("foo#")) expressions it would be nice to be able check what the current namespace is with eg (current-namespace) --> "foo#" Thanks Duncan _______________________________________________ Gambit-list mailing list Gambit-list@iro.umontreal.ca https://webmail.iro.umontreal.ca/mailman/listinfo/gambit-list _______________________________________________ Gambit-list mailing list Gambit-list@iro.umontreal.ca https://webmail.iro.umontreal.ca/mailman/listinfo/gambit-list _______________________________________________ Gambit-list mailing list Gambit-list@iro.umontreal.ca https://webmail.iro.umontreal.ca/mailman/listinfo/gambit-list _______________________________________________ Gambit-list mailing list Gambit-list@iro.umontreal.ca https://webmail.iro.umontreal.ca/mailman/listinfo/gambit-list
participants (4)
-
Duncan Watts -
Gerald Klix -
Marc Feeley -
Steve Graham