当我学习HTML时,我知道ol
表示ordered list
,tr
是table row
等等,对我来说非常有帮助。一些lisp原语/表单很简单:funcall
应为function call
,defmacro
- define macro
。有些在中间 - incf
是...... increment... f???
但是因为普通的lisp太旧了,所以这些原始/特殊形式/等......似乎没有响铃。 你们能帮助我搞清楚吗?更重要的是:哪里可以找到一个权威的资源来学习每一个背后的意义/历史?(我将接受基于第二个问题的答案)
文档对我没有帮助:
* (describe #'let)
#<CLOSURE (:SPECIAL LET) {10013DC6AB}>
[compiled closure]
Lambda-list: (&REST ARGS)
Derived type: (FUNCTION (&REST T) NIL)
Documentation:
T
Source file: SYS:SRC;COMPILER;INFO-FUNCTIONS.LISP
* (documentation 'let 'function)
"LET ({(var [value]) | var}*) declaration* form*
During evaluation of the FORMS, bind the VARS to the result of evaluating the
VALUE forms. The variables are bound in parallel after all of the VALUES forms
have been evaluated."
* (inspect 'let)
The object is a SYMBOL.
0. Name: "LET"
1. Package: #<PACKAGE "COMMON-LISP">
2. Value: "unbound"
3. Function: #<CLOSURE (:SPECIAL LET) {10013DC6AB}>
4. Plist: (SB-WALKER::WALKER-TEMPLATE SB-WALKER::WALK-LET)
以下lisp原语/特殊表单/特殊运算符/函数是什么意思?
(在评论中写下更多内容,以便我们列出一个好名单!)
答案 0 :(得分:7)
subprocess.Popen([sys.executable, "../main.py"])
: LET 变量名称绑定到某个值Config = ConfigParser.ConfigParser()
Config.read("settings.ini")
userId = Config.get('user', 'id')
: LET F unction-name绑定到某个功能let
:执行 PROG ram序列并返回 N 值(最后一个值)flet
: C 上 A 地址 R egister(历史性)progn
: C onffnts D ecrement R egister(historical)car
: ACC umulator cdr
: SET Q uote,acc
函数的变体,setq
用户不在引用变量set
:设置 F 引用,原始名称setq
的缩写名称。这里不评估函数/位置。setf
: INC 引用 F 引用,类似于setfq
。增加一个地方。其他惯例:
incf
:setf
,f
,setf
,psetf
,... incf
或decf
:def
,define
,defun
, defmethod
... defclass
, N on-consing:define-method-combination
,... n
或nreverse
:p
,-p
,... adjustable-array-p
:alpha-char-p
,... 还有其他naming conventions。
答案 1 :(得分:4)
let
:嗯,这是一个普通的单词,在数学中使用(“让x = 3 in ...”)。flet
:我猜“函数let
”,因为它就是它的作用。progn
:这可能与prog1
和prog2
有关。我读的是“ prog ram, n 形式决定了结果值”。该程序有n个表单,因此它是形成progn
表单结果值的最后一个表单。car
和cdr
:“内容地址注册”resp。 “内容减少登记册”。这与to the IBM 704 which Lisp was originally implemented for相关。setq
:“set quote”,最初是(set (quote *abc*) value)
。setf
:“设置字段”,出现词汇变量时出现。关于set
函数的This is a good read。 我在哪里可以找到关于学习每一个背后的意义/历史的权威资源?
HyperSpec是一个很好的起点,最终是ANSI标准。虽然“Common Lisp The Language”也可以对一些名字的历史有所启发。
(哦,你错了defmacro
,那是"Definition for Mac, Read Only.“;))