Tal*_*Kit 1 lisp emacs functional-programming elisp
有一个字符串列表.想法是编写一个迭代字符串列表的函数,如果找到匹配则返回字符串名称,否则nil.这可以用c ++语言编写
string match-string(tmp)
{
for (int i = 0; i < stringList.size(); ++i)
{
if (tmp == stringList.at(i))
return tmp;
}
return string(); // null string
}
Run Code Online (Sandbox Code Playgroud)
在Lisp中绝对使用循环.在Lisp中,循环更有吸引力,例如Emacs Lisp和Common Lisp,它们不能保证尾部消除.
如果你坚持写功能,你可以这样做.它可能看起来像这样:
(defun find-string (string list)
(if (null list)
nil
(if (equal string (car list))
(car list)
(find-string string (cdr list)))))
Run Code Online (Sandbox Code Playgroud)
但是在Emacs Lisp中,这段代码不会从尾部调用消除中受益,并且可能运行缓慢或烧坏堆栈.使用循环可能更好:
(defun find-string (string list)
(loop for s in list
when (equal s string) return s))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
818 次 |
| 最近记录: |