学习《X分钟速成Y》Y=elisp

程序小白,英文不熟,先学一学中文教程,地址在:Learn elisp in Y Minutes

有很多不懂之处,请大佬们多多赐教!先行谢过!

首先,第一问:

;; 你可以用 `let’ 将一个值和一个局部变量绑定:

(let ((local-name “you”))

1,这行语句中,let与之前的setq都可以赋值,有何区别?是不是setq只负责赋值,let还可以连接几个程序句子为一组?

2,((local-name “you”))为何用两个(())?

可以通过 C-h f 查看函数帮助。

  1. let 的赋值可以看作临时或者局部变量,只在其 BODY 中有效;
  2. 根据下面的函数说明,(let VARLIST BODY…) 中的 VARLIST 是一个list,两个括号是因为可以赋值多个,比如
(let ((first "first")
      second
      (third "third"))
  (message third))

Bind variables according to VARLIST then eval BODY. The value of the last form in BODY is returned. Each element of VARLIST is a symbol (which is bound to nil) or a list (SYMBOL VALUEFORM) (which binds SYMBOL to the value of VALUEFORM). All the VALUEFORMs are evalled before any symbols are bound.

3 个赞

一般当你需要局部变量的时候就会想到let。

1 个赞

谢谢两位老师耐心解答,都明白了。

只是

C-h f 查看函数帮助

这段英文,即使通过翻译,即使以前也考过四六级,看不懂仍然是看不懂啊。

Bind variables according to VARLIST then eval BODY.

绑定变量通过变量表,然后评估实体??

我的理解是:根据VARLIST绑定变量(多个),然后对BODY部分求值。

你不理解是因为涉及到elisp的概念,和英文水平没关系。

英语早就 就着馒头吃了,难道为了处理汉字而学的lisp,难道还要再补课英语吗?

lisp的中文教程很少啊,期待中文教程。

回复错人了,, :sweat_smile:

我相信有很多人有翻译elisp manual的雄心壮志,我也有过。搜索一下github发现有几个翻译的项目但都没进行下去。哎,只能说elisp手册太庞大了,能看懂英文为什么要花大量的时间精力去翻译。说白了,没人愿意无偿干这件事。

第二个问题:

;; 现在我们用格式化的方法再重写一下我们的函数:

(defun hello (name)

(insert (format “Hello %s!\n” name)))

(hello “you”)

这段是照抄文章的程序段,我放在一个空的buffer里执行,得到错误提示:

symbol’s function difinition is void: hello

莫非elisp版本更新了,还需要更严格的定义?

好多热心朋友推荐李杀的教程,我发现他的教程比较短小精悍,如果再加上一些个性化的语言,重新翻译一下,或许是个很好的汉语教程。

热心的 @ Action 之前发了几个帖子,打算从零开始教lisp,很是期待。

你执行这个函数了吗?C-x C-e

执行之后,才有的错误提示啊

那个函数也执行了?执行的结果是什么? 上面两行是函数的定义,最后一行是函数的调用。先eval一下函数的定义,然后eval函数调用。

这是最基础的问题,我私聊你了

人家说了要捐钱才继续放文章。

1 个赞