在我的lisp编程课程中,我使用了lispworks IDE试用版,这是一个非常好的IDE,但它仍然是试用版.我搜索了一个新的IDE.我看了这个视频https://www.youtube.com/watch?v=VnWVu8VVDbI.
他使用slime sbcl和quicklisp在emacs上使用常见的lisp编程.
我的问题是,这怎么可能?emacs不是自带的lisp方言,它被称为Emacs lisp,还是彼此分开?
我想知道我们可以从已有的列表中设置一个列表吗?
(setq example1 '(1 2 3))
(setq example2 '((caddr example1) (cadr example1) (car example1)))
Run Code Online (Sandbox Code Playgroud)
我知道我写的方式不会达到理想的结果,但无论如何都要达到那个结果?怎么样?
感谢您的时间!
我知道values函数有助于控制REPL,但我想显式返回函数的最后一个值.唯一接近我设法找到我想要的东西是
(setf (values q a) (floor 1.5))
Run Code Online (Sandbox Code Playgroud)
但我只对它返回的0.5感兴趣.我的问题是我怎么才能只返回函数的最后一个值而不仅仅是第二个值而是第n个值(以它为准)?
我是lisp编程的新手,我想知道如何在没有引号的情况下输出字符串而不返回nil像大多数语言一样的对象(包括不返回a )?
std::cout<<"Hello world\n";
Run Code Online (Sandbox Code Playgroud)
我知道format t函数会这样做,但它仍然返回nil没有一种方法输出没有nil和引号?可能吗?
我想问一下为什么我的函数不需要使用 values 函数来输出嵌套列表?
(defun p2 (l)
(cond
((null l) nil)
((listp (car l)) ( values (p2 (car l)) (p2 (cdr l))) )
(t (princ (car l)) (princ " ") (p2 (cdr l)))
))
Run Code Online (Sandbox Code Playgroud)
我的意思是,cond如果条件为真,构造是否不返回 1 个值或执行 1 个操作?
为什么这样做?
我试着想出一个更好的名字,但我不能.此外,每个主题都涉及python,我不知道python
我知道dafult :meta-class是standar-class
这standard-object是一个实例,standard-class并且每个类都是一个实例standard-class并且继承了所有内容,standard-object但是这怎么可能呢?同样如何standard-object成为一个对象和一个超类呢?它是如何工作的,为什么?
我不明白的是,一个即时课程怎么也可以成为一个班级?
所以我想重新制作一个程序,该程序使用列表来包含对象并用数组替换列表.
我遇到了一个问题,我的对象属于同一个实例
(setq arr (make-array 3 :initial-element (make-instance 'object) :adjustable t :fill-pointer 3))
在此代码执行之后
数组中的所有对象都是相同的,解释器给了我这个
#(#<OBJECT {1002DFDD23}> #<OBJECT {1002DFDD23}> #<OBJECT {1002DFDD23}>)
我知道其他方法可以做到这一点,但我仍然想知道为什么会这样?
如果不是什么#<OBJECT {1002DFDD23}意思作为一个整体是什么意思,这是一个什么样的内存地址?