【问题标题】:LISP list Clisp function smaller thanLISP list Clisp 函数小于
【发布时间】:2013-12-21 16:12:21
【问题描述】:

我想写一个有两个参数的函数 一个原子x 和一个列表L 并返回列表L 中小于x 的数字列表

例如:

列表是(2 10 3 9 4 8)x5

输出应该是:(2 3 4)

我想我可以使用小于函数

(defun less-than (x y)
  (or (< x y))

但它从列表中返回小于:(

【问题讨论】:

  • 过滤列表的代码是什么?你见过(remove-if inverted-pred list)吗?
  • @reto 不必反转,因为你有remove-if-not
  • @Sylwester 对,谢谢!
  • @Sylwester 但是反转谓词很容易:(remove-if (complement #'pred) ...) :)

标签: lisp


【解决方案1】:
(defun less-than (x L)
  (remove-if-not
   (lambda (e) (< e x))
   L))

(less-than 5 '(2 10 3 9 4 8))
=> (2 3 4)

(defun less-than (x L)
  (remove-if
   (lambda (e) (>= e x))
   L))

【讨论】:

  • 因为remove-if-not 适用于一般序列,所以答案也适用于向量。 (less-than 5 #(2 10 3 9 4 8)).
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-10-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-31
  • 1970-01-01
  • 2021-05-15
相关资源
最近更新 更多