2010-09-20 32 views
4

J'essaye de retourner une valeur invisible dans une fonction de schéma, mais ne peux pas sembler obtenir n'importe quoi que WONT soit imprimé à l'écran, qui est ce dont j'ai besoin. Y a-t-il une valeur dans le schéma qui peut être ajoutée à une liste qui ne sera pas imprimée dans un appel (d'affichage)?Pouvez-vous retourner une valeur dans Scheme qui ne sera pas imprimée dans une liste?

+0

Mais où êtes-vous de retour à, puis, sinon stdout ou à une autre fonction? – Greg

Répondre

1

Au lieu d'essayer de créer un type invisible, pourquoi ne pas utiliser le filtre pour identifier et supprimer les valeurs que vous ne voulez pas créer une nouvelle liste que vous pouvez faire tout ce que vous voulez avec, comme imprimer à l'écran.

(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)) 

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

0

Il n'existe aucun moyen standard pour ce faire. Vous pouvez redéfinir la procédure display (ou n'importe quel appel de sortie sur votre schéma) afin qu'elle n'imprime pas les objets d'un type particulier.

(define display-old display) 

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