(defun makeAr(li co)
(make-array '(li co)))
Run Code Online (Sandbox Code Playgroud)
这不起作用,它说 li 和 co 是非法参数,尽管我这样称呼它例如:
(make-array 3 3)
Run Code Online (Sandbox Code Playgroud)
这根本行不通。有谁知道为什么?
我正在尝试使用lambda,但是当我在控制台中对其进行测试时,它会返回#<procedure:...esktop/Lab 4.rkt:105:2>
。
我的代码是
(define (comp f g)
(lambda (x) (f (g x))))
Run Code Online (Sandbox Code Playgroud)
我的测试代码是
(comp (lambda (x) (+ x 1)) 3)
Run Code Online (Sandbox Code Playgroud)
由于某种原因,lambda推迟了评估。有人可以帮忙吗?
已经花了几个小时了,我是 LISP 新手,无法弄清楚这有什么问题。我正在尝试使用回溯来解决矩阵问题。有人可以帮忙吗?
(defvar m 3)
(defvar n 4)
(defvar M-DASH (make-array (list m n)
:initial-contents '((1 0 1 0) (0 1 1 0) (1 0 1 1))))
(defvar selected (make-array n))
(defvar set-count 0)
(defun cand-set-count (M-DASH set-count selected curr)
(if (>= curr m)
(progn
(incf set-count)
(return-from cand-set-count 0)
))
(loop for i from 0 to (- n 1)
do (if (and (equal (aref M-DASH curr i) 1) (null (aref selected i)))
(progn
(setf (aref selected i) 1) …
Run Code Online (Sandbox Code Playgroud) 给定n位整数和m位整数.如何使用列表,数组或任何其他特定于lisp的数据类型在LISP中将它们相乘?
例如;
一(1)(2)... A(N)
B(1)B(2)... B(M)
结果;
R(1)R(2)... R(M + N)
我正在研究关于SICP(计算机程序的结构和解释)的书,这本书要求我学习lisp,所以我为windows安装了一个名为SBCL(Steel Bank Common Lisp)的lisp编译器.问题是我从书中看到了这个代码:
(define pi 3.14159)
(define radius 10)
(* pi (* radius radius))
Run Code Online (Sandbox Code Playgroud)
将其保存在notepad ++上作为filename.lisp并运行它.
发生错误,说:"函数COMMON-LISP-USER :: DEFINE未定义." 为什么会这样?我如何使这项工作?
我需要编写一个lisp函数来消除整数列表中每次出现的x.例如,(elim 7'(7 6 8 8 7 7 9 0))返回(6 8 8 9 0)
所以我在Lisp中编写一个语法,并希望找到语法树的最大深度.
例如,
(SENTENCE (NOUN-PHRASE (DETERMINER THE) (NOUNPLURAL MEN))
(VERB-PHRASE-PAST
((VERBPAST SAW) (NOUN-PHRASE (DETERMINER THE) (NOUNPLURAL DOGS)))))
Run Code Online (Sandbox Code Playgroud)
最大深度应为4(句子 - >动词 - 短语 - 过去 - >名词 - 短语 - >确定者 - >).
但是列表长度为3,并且在扩展内部列表时始终不正确.
如何编写函数来返回此最大深度(不使用任何外部库)?
如何将字符与Common Lisp进行比较?我有google一下,发现有一些功能做比较,比如char=
,char/=
,char<
,char>
,char<=
,和char>=
.但是,我不能像以下那样使用所有功能:
(char= 'a 'a)
(char< 'a 'b)
Run Code Online (Sandbox Code Playgroud)
如果我键入这些命令,CLISP只是给我错误消息"参数A不是一个字符".为什么"A"不是角色?我必须写(char= #\a #\a)
它才能让它发挥作用.我想创建函数来进行字符排序.
谢谢.对不起,我的英语不好.
我定义了一个函数来重复函数调用:
(defun repeat (n f x)
(if (zerop n) x
(repeat ((- n 1) f (funcall f x)))))
Run Code Online (Sandbox Code Playgroud)
现在我想要申请cdr
:
(repeat (1 (function cdr) '(1 2 4 5 6 7)))
Run Code Online (Sandbox Code Playgroud)
我清楚地提供n=1
,f=cdr
和x='(1 2 3 4 5 6 7)
.它应该适用cdr
一次.这是我收到的错误消息:
Error: Funcall of 1 which is a non-function.
[condition type: TYPE-ERROR]
Run Code Online (Sandbox Code Playgroud)
但我有一个funcall
的cdr
,不是1
.
我正在使用Franz的Allegro Lisp的免费版本.
(defun tictactoe3d ()
'(
((NIL NIL NIL) (NIL NIL NIL) (NIL NIL NIL))
((NIL NIL NIL) (NIL NIL NIL) (NIL NIL NIL))
((NIL NIL NIL) (NIL NIL NIL) (NIL NIL NIL))
))
Run Code Online (Sandbox Code Playgroud)
我需要一个能在NIL的位置添加X或O的函数,我需要该函数来询问用户他想要放置它的位置.棋盘游戏是一个tic tac toe 3D(3个板块,1,2个位置,而不是9个).第一行是1级(它基本上与具有9个位置的一个tic tac toe相同).如何将元素添加到这样的列表中.我知道我必须验证一个位置是否为零.