标签: lisp

Clojure 初学者在这里。无法弄清楚为什么函数没有按预期创建列表

我正在尝试将嵌套向量添加到地图中,即({:cells {[xy]})。我尝试过多种方式来做到这一点,但无论我如何尝试,我都无法让它发挥作用。我不断收到“错误数量的参数(0)传递给:clojure.lang.PercientArrayMap”,或者在另一种情况下,我什至无法让我的剩余函数即(坐标生成)来编译它。我必须手动重新输入它们才能让 REPL 识别它们。一般来说,我确实是一个认真编码的初学者,所以我不知道该去哪里。这是我的功能:

(defn values-manual [grid values]
  (let [inter (interleave (coordinates-gen grid) [values])]
    (loop [[x y & remaining] inter]
      do(
         (assoc grid :cells (x y))
         (recur remaining)))))
Run Code Online (Sandbox Code Playgroud)

我选择将两个向量(网格和值)交错在一起,因为它们的大小可能不同,并且交错会自动截断为较小的向量,这对于我的输出来说是理想的。然后我访问该列表的前两个元素。然后将它们与我的“网格”地图中的 :cells 键关联起来。然后对其余元素重复。一旦我尝试运行它,它就无法工作,并且我的其他定义的函数也无法被识别。我还使用了 do() 因为我可以验证循环是否适用于多个函数。到底是怎么回事?非常感谢任何帮助。

我尝试了我能想到的一切。这是我的第一个大型编码项目。

lisp clojure

0
推荐指数
1
解决办法
122
查看次数

对R6RS计划的批评

我听到Schemers对新的R6RS计划提出了很多抱怨.什么比R5RS更糟糕?

lisp scheme

-1
推荐指数
1
解决办法
524
查看次数

lisp方案列表

为什么结果(cons (list 1 2) (list 3 4))((1 2) 3 4)

我想知道为什么结果长度为3(3个元素).我的直觉让我觉得这 (list 1 2)是一个列表,(list 3 4)也是一个列表.通过使用cons过程,结果应该是两个元素,每个元素都是一个列表,但结果并不像我期望的那样.

谁能告诉我为什么?谢谢.

lisp scheme list

-1
推荐指数
1
解决办法
307
查看次数

Lisp循环列表

我们已经从lisp获得了作业,我需要使用"循环"列表(我不知道这是什么命名).通过"循环"列表,我的意思是列表,cdr最后一个cons的哪一个指向同一列表中的第一个.

(Value1 . PointerValue2) (Value2 . PointerValue3) (Value3 . PointerValue1)
Run Code Online (Sandbox Code Playgroud)

我们被教导要创建这样的列表:

(defun cykl (l)
  (setf (cdr (last l)) l)
)
Run Code Online (Sandbox Code Playgroud)

我使用的Lisp软件(Lispbox)不支持这种列表.我也在Debian上尝试了clisp,但是在创建了这样的列表后它已经崩溃了.

你知道哪些lisp实现支持这个(免费软件,os独立)?

lisp list common-lisp circular-list

-1
推荐指数
1
解决办法
325
查看次数

Lisp中的相等和反向函数

我是Common Lisp的新手,经历了一个教程,无法解决这个问题

 (equal '(reverse (a b)) '(b a)))
Run Code Online (Sandbox Code Playgroud)

返回零.

非常感谢你的帮助.

M.

lisp common-lisp

-1
推荐指数
1
解决办法
138
查看次数

mit-scheme的“格式错误的子句”问题

使用mit-scheme尝试一些Lisp。

(define (inv curstate x y)
  ((cond (= y 1) curstate)
   (cond (even? y)
         (inv (square curstate) x (/ y 2)))
   (else 
    (inv (* x curstate) x (- y 1)))))
Run Code Online (Sandbox Code Playgroud)

解释器错误:

格式错误的子句:curstate

另一个版本使用线性递归方法,因此存在类似的错误。该怎么办?

lisp scheme

-1
推荐指数
1
解决办法
265
查看次数

Lisp排序查询

我想对((A 4)(B 2)(C 3)(D 5))进行排序,使得结果为((D 5)(A 4)(C 3)(B 2)).我有正常的排序技术,但它不适用于子列表.

lisp elisp common-lisp

-1
推荐指数
1
解决办法
121
查看次数

Common Lisp:如何将URL包含为列表的元素?

我想创建一个包含URL的列表,如下所示:

(setf assertion '(BookStore targetNamespace http://www.books.org))
Run Code Online (Sandbox Code Playgroud)

但这会导致此错误消息:

Error in READ [or a callee]: There is no package with the name HTTP.
Run Code Online (Sandbox Code Playgroud)

为什么URL会产生错误?

如何将URL作为列表元素包含在内?

lisp common-lisp

-1
推荐指数
2
解决办法
61
查看次数

通用LISP传递的参数少于所需的参数 - 发生了什么?

我目前正在研究一些涉及多项式的代码(不是我的),以便更好地理解功能样式LISP编程.

(define collect-terms(a)
  (sort a #'compare))

(defun compare(a b)
  (llt (car (cdr a)) (car (cdr b))))
Run Code Online (Sandbox Code Playgroud)

我不明白当函数定义为2时,compare方法在collect-terms中调用时,compare方法如何才能只使用一个参数.

在这种情况下,compare成功获取传递的列表的子列表,并将它们用作a和b的值.

lisp functional-programming common-lisp

-1
推荐指数
1
解决办法
49
查看次数

代码错误Lambda表达式

我正在尝试编写一个lisp函数来测试一个数字是否为素数.我收到了lambda表达式错误(我已经搜索过以前回答的与此相关的问题),但我找不到解决方案.

(defun prime(n) 
(    
  (defvar '(*ok* nil) (*i* nil) (*d* nil)  
  (setf *ok* 1)
     (loop for *i* from 1 to (sqrt n) do
       ( 
    (if (= (mod n *d*) 0)
            (setf *ok* 0))  
       )
     )
     (if (= *ok* 1)
            (format t "Numarul prim")
            (format t "Numarul nu este prim")
         )
 )
Run Code Online (Sandbox Code Playgroud)

)

lisp common-lisp

-1
推荐指数
1
解决办法
74
查看次数