小编Ren*_*nzo的帖子

方案 - 计算列表中的元素

我有以下代码:

(define (howMany list)
  (if (null? list)
      0
      (+ 1 (howMany (cdr list)))))
Run Code Online (Sandbox Code Playgroud)

如果我们执行以下操作:(howMany '(1 2 3 (4 5)))我们将得到 4 结果。我该如何做才能计算列表中的整数数量。这意味着同样的问题将返回 5 作为答案,而不是 4。

scheme racket

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

Clozure Common Lisp - file-exists-p未定义

在Clozure Common Lisp中调用(file-exists -p"somepath")时,我得到一个"未定义的函数FILE-EXISTS-P with arguments ..."错误,但在任何地方我看起来这个函数都应该可用.我甚至在使用Mx apropos时都会看到它.

我正在使用LispBox for Windows.

有没有人知道可能出现什么问题,或者可能建议我可以尝试解决这个问题的过程?

lisp common-lisp ccl clozure-cl

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

LISP创建阵列

当我使用此函数创建数组时,出现以下错误:

> (defun f1(lst)
   (setf m (make-array '((length lst) 3))))
F1
> (f1 '(1 2 3))
Error: Not a nonnegative integer - (LENGTH LST)    
Run Code Online (Sandbox Code Playgroud)

列表的长度应为非负整数,在这种情况下为3,那么为什么会出现此错误,我该怎么办?

> (length '(1 2 3))
3
Run Code Online (Sandbox Code Playgroud)

lisp arrays common-lisp

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

为什么这个简单的 LISP 函数会抛出错误?

我将这个函数从一个更大的脚本中分离出来,并通过https://www.jdoodle.com/execute-clisp-online/运行它。即使抛出了一个错误,它似乎也遵循 LISP 的规则,除非我遗漏了一些明显的东西。

(defun cannibals-can-eat (state start-state)
    (let ((left-bank-missionaries 2)
         (left-bank-cannibals 5)
         (right-bank-missionaries (- 3 left-bank-missionaries))
         (right-bank-cannibals (- 2 left-bank-cannibals)))

         (if (or (> left-bank-cannibals left-bank-missionaries)
                 (> right-bank-cannibals right-bank-missionaries))
             t
             nil)))
Run Code Online (Sandbox Code Playgroud)

错误有时是The variable LEFT-BANK-MISSIONARIES is unbound.unmatched close parenthesissyntax error near unexpected token('`。使用此版本的函数,错误是后者。

lisp clisp common-lisp syntax-error

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

检查数字lisp中偶数位置的偶数位数

我需要一个函数来检查偶数位置上某些数字的所有数字是否均匀.最低位数位于位置1,从右到左.该函数需要用lisp编写.例子:

245 -> true, since 4 is even
238456 -> false, since 5 is odd and 8 and 2 are even
and so on...
Run Code Online (Sandbox Code Playgroud)

这就是我得到的:

(defun check(number fac)
  (cond
    ((= (/ number fac) 0) t)
    ((= (mod (/ number fac) 2 ) 0)  (check number (* 100 fac) ) )
    (nil)))
Run Code Online (Sandbox Code Playgroud)

初始值为fac10,我们将数字除以10,提取第二个数字,检查它是否为偶数,如果是,继续并将数字除以1000以提取第4个数字,依此类推,直到我们越过所有数字,比函数返回true,同时如果某个数字为奇数,则该函数应该返回nil.但是有些东西是错的,而且nil当我把它称为(check 22 10)例如时,函数会一直返回.

有什么想法吗?

lisp position numbers common-lisp digit

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

在Lisp中返回两个集合的并集(按字母顺序)的函数

以下过程获取两个列表,并将它们的并集作为有序列表返回。

(defun stable-union (lst1 lst2)
  (cond ((null lst1) lst2)
        ((null lst2) lst1)
        ((and (null lst1) (null lst2)) nil)
        (t
         (let ((el1 (car lst1))
               (el2 (car lst2)))
           (cond ((string= el1 el2)
                  (cons el1
                     (stable-union (cdr lst1)  (cdr lst2))))
                  ((string< el1 el2)
                   (cons el1
                         (stable-union (cdr lst1)  lst2)))
                  (t
                   (cons el2
                         (stable-union lst1 (cdr lst2)))))))))
Run Code Online (Sandbox Code Playgroud)

它仅适用于某些示例,而不适用于其他示例。例如:

STABLE-UNION: (STABLE-UNION '(A B C) '(B A D)) failed: 
Expected (A B C D) but saw (A B A C D)
STABLE-UNION: (STABLE-UNION '(A B C) …
Run Code Online (Sandbox Code Playgroud)

recursion common-lisp ordered-set

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

在Lisp代码中修复此未定义功能?

我迷失了评估这段代码以查找错误的念头。我不确定为什么会得到未定义的函数。有人可以指导我理解原因吗?谢谢!

O应该是一个对象,L应该是一个列表。我正在尝试将O附加到列表的末尾并返回列表

(defun my_attach(O L)
    (cond ((eq L nil )
        O )
        (t (cons (car L) (my-attach O (cdr L)) )
        )
    )
)
Run Code Online (Sandbox Code Playgroud)

lisp syntax recursion common-lisp cons

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

&amp;rest in common lisp

&rest对普通 lisp 的作用感到困惑。这可能是一个代表我的意思的例子:

(defmacro switch (value &rest pairs)
             .... 
)
Run Code Online (Sandbox Code Playgroud)

&rest 和pairs 到底是什么意思?

lisp macros function common-lisp

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