lisp - 通用 Lisp 函数

标签 lisp common-lisp

我想创建一个函数来验证列表中的数字是否在 1 到 10 的范围内(包括 1 和 10)。如果他们这样做,我想将其添加到我创建的新列表中。但是,如果它们未能落入范围内,我决定将它们转换为适合的范围,而不是丢弃它们(通过添加 (1+ (随机 10))。

(defun fit (lst)

  "(lst) check every number if it fits the range (1-10)"

  (do ((fit lst (cdr fit))

       (range nil))
      ((null fit) (reverse range))
    (if (and (>= fit 1) (=< fit 10))
        (seft ((cons fit range))))
       (or (< fit 1) (> fit 10)) 
           (cons (+ fit (1+ (random 10))) range)))

代码从(defun fit...)开始。然而,它不起作用,而且我无法做任何类型的改变,主要是因为我的知识有限。任何帮助或见解将不胜感激。 谢谢。

最佳答案

我认为您自己尝试做太多工作。思考更高的功能。您的问题陈述已经告诉您一半的内容:“检查每个数字是否在 1-10 范围内”。

使用(每个)怎么样?然后您需要向其传递一个检查单个数字的函数。可能是 lambda ...

关于lisp - 通用 Lisp 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8015188/

相关文章:

common-lisp - 普通 lisp 中的 #'

lisp - 使用lisp添加两个列表

syntax-error - Lisp,指令在 defun 中不起作用

lisp - 为什么这两个打印相同的东西?

functional-programming - Lisp - 逻辑运算符

lisp - 理解 Racket 中的原语 "foldl"

lisp - 使用 Lisp REPL 中的 `qlot`

docker - 在 Docker 镜像中安装 Quicklisp 库

lisp - Common LISP 中的简单 CouchDB 获取和显示记录

emacs - (interactive) 在 Emacs Lisp 函数中意味着什么?