我有一个像这样的课
(defclass shape ()
((color :initform :black)
(thickness :initform 1)
(filledp :initform nil)
(window :initform nil)))
Run Code Online (Sandbox Code Playgroud)
如果我只知道这个类的实例,那么common-lisp中是否有一个函数如何获取这些插槽的列表?
我想知道,如何在lisp中创建和编写文本文件.我只想写简单的行:
"break 1"
"break 2"
Run Code Online (Sandbox Code Playgroud)
我在Window 7上使用LispWorks IDE
我对下面的LISP表达式有疑问.在对浮点数求和时,存在浮动精度错误.
CL-USER> (+ -380 -158.27 -35.52)
Actual: -573.79004
Expected: -573.79000
Run Code Online (Sandbox Code Playgroud)
请建议我如何在LISP中实现预期的结果(我正在使用Lispworks).
我对Lisp并不陌生,正在尝试编写一个程序,仅要求用户输入3个数字,然后对它们求和并打印输出。
我读到您可以使用类似的功能:
(defvar a)
(setq a (read))
Run Code Online (Sandbox Code Playgroud)
要在Lisp中设置变量,但是当我尝试使用LispWorks编译代码时,出现以下错误:
End of file while reading stream #<Concatenated Stream, Streams = ()>
我觉得这应该相对简单,不知道我要去哪里错。
我正在使用 LispWorks 的多处理工具(请参阅此处)。我启动了许多子进程(使用process-run-function),其中每个子进程都与一个特定的邮箱相关联。我想要实现的是format子进程中标准输出(使用)的消息最终在邮箱中,之后我可以在主进程中读取它们。
我将通过用*standard-output*调用mailbox-send格式化字符串的自定义流替换子流程的流来解决这个问题。但是,我不知道如何创建这样的自定义流。我在这里有哪些选择?
我想创建一个与C中的宏对应的lisp函数.例如,win32 API中有一个HIWORD,它被定义为头文件中的一个宏.
我尝试将其定义如下,但被告知HIWORD尚未解决.
CL-USER 4 > (hiword #xFFFFFFFF)
Error: Foreign function HIWORD trying to call to unresolved external function "HIWORDW".
Run Code Online (Sandbox Code Playgroud)
我只是想知道如何为C函数创建C宏的包装器.
(fli:define-c-typedef DWORD (:unsigned :long))
(fli:define-c-typedef WORD (:unsigned :short))
(fli:define-foreign-function
(HIWORD "HIWORD" :dbcs)
((dwVal dword))
:result-type word :calling-convention :stdcall)
Run Code Online (Sandbox Code Playgroud) 我的代码中的移动功能有问题.我需要它:
到目前为止,我已经为点,圆和多边形移动了具有不同名称的函数.我无法弄清楚如何为图片制作移动功能.
如果你们能帮助我与移动的图片功能和编辑所有的举动,使他们的工作就像我在开头所描述的功能.
;
; POINT
;
(defun make-point ()
(list (list 0 0) :black))
(defun x (point)
(caar point))
(defun y (point)
(cadar point))
(defun set-x (point new-x)
(setf (caar point) new-x)
point)
(defun set-y (point new-y)
(setf (cadar point) new-y)
point)
(defun move (point dx dy)
(set-x point (+ (x point) dx))
(set-y point (+ (y point) dy))
point)
;
; CIRCLE
;
(defun make-circle …Run Code Online (Sandbox Code Playgroud) 我在通过 LISP 的点对表示盒子结构时遇到问题。
CL-USER 21 > (cons 1 (cons (cons 3 4) (cons (cons 3 4) 2)))
(1 (3 . 4) (3 . 4) . 2)
Run Code Online (Sandbox Code Playgroud)
这就是我所拥有的,这是输出,但这显然是不正确的,因为 3.4 对出现了两次,有人可以帮我纠正这个问题吗?它必须用 cons(点对)表示。
我尝试用多种不同的方式来表示它,但我找不到解决方案。
我是LISP新手,目前在window server 2008上使用LispWorks和ListBox IDE。我想知道,我们如何编译和运行包含350个LISP源文件的LISP项目。编译后会生成什么以及如何运行它......?以及有哪些技术可用于调试 Lisp 项目。(这是旧技术,所以我无法从互联网获得太多帮助)
我正在将Lispworks用于学校的项目,我遇到了一些麻烦; 监听器在输出中为我提供了一个带有高于四深度的列表的#标签.这是一个例子:
CL-USER 21 : 5 > '(1(2(3(4(a)))))
(1 (2 (3 (4 #))))
Run Code Online (Sandbox Code Playgroud)
任何线索?
我必须在Lisp中编写一个简单的程序,它将多项式乘以某个因子.在这个例子中,我想乘以(x + 5)*5x.答案应该是5x ^ 2 + 25x.
当我投入时,((1 1) (5 0)) (5 1))我应该得到(5 2) (25 1).但是,我遇到各种错误,undefined operator TERM in (TERM)并且bad binding form.我是Lisp的新手,并尝试返回如上所示的列表.以下是我的简短代码块:
(defun get-coef (term)
(car term))
(defun get-power (term)
(cadr term))
(defun make-term (coef power)
(cons coef power))
(defun poly-eval (poly factor)
(if (null poly) 0
(let ((term (car poly))
(let (coef ((* (get-coef(term)) (get-coef(factor)))))
(power ((+ (cadr(term)) (cadr(factor)))))
(make-term (coef power))
(poly-eval (cdr poly) factor))))))
Run Code Online (Sandbox Code Playgroud)
任何帮助表示赞赏!!
首先,我被迫使用LispWorks,我想知道它实际使用了什么编译器,以及我是否可以在CLI中使用它.同样在LispWorks中有类似的方法defsystem,它们是以某种方式在环境中构建的还是它们形成了一个我可以在sbclREPL中实际加载的包(例如)?
我想在函数中创建一个数组,并将其作为参数传递给另一个函数,该函数从该函数调用.我怎样才能做到这一点?这是伪代码:
define FuncA (Array Q){
<whatever>
}
define FuncB (n){
make-array myArray = {0,0,....0}; <initialise an array of n elements with zeroes>
FuncA(myArray); <call FuncA from FuncB with myArray as an argument>
}
Run Code Online (Sandbox Code Playgroud)