lisp 使用S表达式来编写代码,而用S表达式编写的 lisp 程序是可以将一段S表达式处理成新的表达式的(eval-apply),也就是连在程序运行时改变程序本身。 由于这种语法足够直接,它的语法解析非常简单而功能十分强大,举个声明变量例子: 你可以用一些乱七八糟的字符甚至非字符作为你的变量名或者值,不受任何关键字影响(会...
是则利用Apply来进行函数调用,同时Apply也需要Eval来得到函数和值 举个例子,eval 的过程如下: 1(eval '(* (+123)2))23(apply (eval'*) (map eval'((+123)2)))45(apply [primitive *] (list62))67;===>12 4.都不是则报错 参考
一个解释器的执行主要靠两个函数:eval 和apply。 eval 会把你输入的表达式分解成更小的表达式并逐个执行,而 apply 会执行你的表达式。基本流程是这样的,例如你输入一个表达式 (+ 1 2 (/ 3 3)),首先 eval 会把(+ 1 2 (/ 3 3)) 视为一整个表达式,然后会递归执行 eval 解析(/ 3 3) ,最后 (/ 2 ...
第一个参数没有传递this,那调用函数的主体就变成了document,而不是绑定了onclick的节点, 这点需要关注 ...
1.eval :命令,将一段数据代码中的可执行部分当作程序代码进行计算处理。可以允许程序自更改代码 115p: 1. concatenate (type arg1 arg2 ...) :命令,联接字符串,type 为 联接参数,其余参数为被连接的字符串或返回值为字符串的命令。 例: (concatenate 'string "(" (read-line) ")" "test" "command") ...
对于程序员来说, eval 的主要价值大概是作为 Lisp 的概念模型。我们可以想像 Lisp 是由一个长的 cond 表达式定义而成:(defun eval (expr env) (cond ... ((eql (car expr) 'quote) (cdr expr)) ... (t (apply (symbol-function (car expr)) (mapcar #'(lambda (x) (eval x env)) (cdr ...
12.3(apply 功能函数列表)将功能函数与列表结合后执行 12.4(defun 名称 自变量列表表达式_。)自定函数或子程序 12.5(eval 表达式)返回:表达式的执行结果 12.6(exit)强制退出目前的应用程序 12.7(lambda 自变量表达式)定义未命名的函数 12.8(progn 表达式1 表达式2…)连接其内的表达式为一组,常用于配合if、cond等函数...
书的封面就透着一股古怪。那上面画着一位朝着桌子走去,准备要施法的巫师或者炼金术士。他的一只手里抓着一副测径仪 —— 或者圆规,另一只手上拿着个球,上书“eval”和“apply”。他对面的女人指着桌子;在背景中,希腊字母 λ (lambda)漂浮在半空,释放出光芒。
對於程式設計師來說, eval 的主要價值大概是作爲 Lisp 的概念模型。我們可以想像 Lisp 是由一個長的 cond 表達式定義而成:(defun eval (expr env) (cond ... ((eql (car expr) 'quote) (cdr expr)) ... (t (apply (symbol-function (car expr)) (mapcar #'(lambda (x) (eval x env)) (cdr...
APPLY既可用于内部函数(子程序),也可用于用户定义的函数(即那些用DEFUN或者LAMBDA产生的函数)。 21 (ascii 《字符串》 ) 这个函数返回《字符串》中第一个字符的ASCII字符码(整数)。它和BASIC语言中的ASC函数相似。 例如: (ascii ”A“) return 65