公共Lisp编程

公共Lisp编程,lisp,Lisp,我不熟悉lisp语言。才三天。 我有一个作业,我需要帮助写代码 编写一个包含三个参数的Lisp函数:一个名为aList的整数列表、一个名为min的整数和一个名为max的整数。该函数返回aList中位于min范围内的元素数 安装 在REPL中键入代码,然后再试一次 参考代码来查找列表中的元素数量,这些元素的数量在min范围内,这就是我将如何进行的 (defun countem (aList min max) (apply #'+ (mapcar (lambda (x) (if (<= m

我不熟悉lisp语言。才三天。 我有一个作业,我需要帮助写代码

编写一个包含三个参数的Lisp函数:一个名为aList的整数列表、一个名为min的整数和一个名为max的整数。该函数返回aList中位于min范围内的元素数
  • 安装
  • 在REPL中键入代码,然后再试一次

  • 参考代码来查找列表中的元素数量,这些元素的数量在min范围内,这就是我将如何进行的

    (defun countem (aList min max)
      (apply #'+ (mapcar (lambda (x) (if (<= min x max) 1 0)) aList)))
    
    (定义计数(最小最大值)
    
    (apply#’+(mapcar(lambda(x)(如果(您指的是
    x
    y
    ),但它们根本不存在。您只是从其他地方复制粘贴函数体吗?您的意思是什么?不是这样做的?@user3571154尝试
    (+1)
    在您的REPL中。什么是REPL?它返回最小值和最大值之间的整数吗?@user3571154我打赌您在课程中讨论的最新内容之一是使用
    car
    (或
    first
    )和
    cdr
    (或
    rest
    )和列表递归来分解列表。这将是一个很好的起点。(提示:您根本不打算使用
    cons
    (defun countem-1 (aList min max)
           (let ((count 0))
             (dolist (el aList)
               (if (and (>= el min) (<= el max))
                   (setf count (1+ count))))
             (print count)))
    
    (defvar count 0)
    (defun countem-2 (aList min max)
           (if (<= min max)
               (progn
                 (setf count (1+ count))
                 (countem-2 aList (1+ min) max))
               (print count))
    
    (defun countem (aList min max)
      (apply #'+ (mapcar (lambda (x) (if (<= min x max) 1 0)) aList)))