KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
The question is not about using keywords, but actually about keyword implementation . For example, when I create some function with keyword parameters and make a call: (defun fun (&key key-param) (print key-param)) => FUN (find-symbol "KEY-PARAM" 'keyword) => NIL, NIL ;;keyword is not still registered (fun :key-param 1) => 1 (find-symbol "KEY-PARAM" 'keyword) => :KEY-PARAM, :EXTERNAL How a keyword is used to pass an argument? Keywords are symbols whos values are themselves, so how a corresponding parameter can be bound using a keyword? Another question about keywords — keywords are used to define packages. We can define a package named with already existing keyword: (defpackage :KEY-PARAM) => #<The KEY-PARAMETER package, 0/16 ... (in-package :KEY-PARAM) => #<The KEY-PARAMETER package, 0/16 ... (defun fun (&key key-param) (print key-param)) => FUN (fun :KEY-PARAM 1) => 1 How does system distinguish the usage of :KEY-PARAM between package name and function parameter name? Also we can make something more complicated, if we define function KEY-PARAM and export it (actually not function, but name): (in-package :KEY-PARAM) (defun KEY-PARAM (&key KEY-PARAM) KEY-PARAM) => KEY-PARAM (defpackage :KEY-PARAM (:export :KEY-PARAM)) ;;exporting function KEY-PARAM, :KEY-PARAM keyword is used for it (in-package :CL-USER) => #<The COMMON-LISP-USER package, ... (KEY-PARAM:KEY-PARAM :KEY-PARAM 1) => 1 ;;calling a function KEY-PARAM from :KEY-PARAM package with :KEY-PARAM parameter... The question is the same, how Common Lisp does distinguish the usage of keyword :KEY-PARAM here? If there is some manual about keywords in Common Lisp with explanation of their mechanics, I would be grateful if you posted a link here, because I could find just some shor
Tags (comma-separated)
Save Edits
Cancel