你能在Scheme中返回一个不会打印在列表中的值吗?

时间:2010-09-20 22:03:02

标签: null scheme void

我试图在方案函数中返回一个不可见的值,但似乎无法将任何 WONT 打印到屏幕上,这就是我需要的。方案中是否有值可以添加到不会在(显示)调用中打印的列表中?

2 个答案:

答案 0 :(得分:1)

为什么不使用过滤器来识别和删除您不想创建新列表的值,而不是尝试创建不可见类型,然后您可以随意执行任何操作,例如打印到屏幕。

(define (want-this? thing)
  ;; write a function that takes one
  ;;  parameter and returns a boolean
  ;;  true if you want it
  ;;  false if you don't
  )
(filter want-this?  '(v a l u e s))

另见文档:http://docs.racket-lang.org/reference/pairs.html?q=filter#%28def._%28%28lib._racket/private/base..rkt%29._filter%29%29

答案 1 :(得分:0)

没有标准的方法可以做到这一点。您可以重新定义display过程(或您的Scheme上的任何输出调用),以便它不打印特定类型的对象。

(define display-old display)

(define (display obj)
     (if (not (invisible? obj))
         (display-old obj)))