4

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

4

2 回答 2

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

于 2010-09-21T05:56:22.793 回答
0

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

(define display-old display)

(define (display obj)
     (if (not (invisible? obj))
         (display-old obj))) 
于 2010-09-21T05:42:06.363 回答