2016-10-24 4 views
0

En d'autres termes, existe-t-il une fonction f de telle sorte que f x n'évalue pas x et renvoie juste la valeur vide? J'ai essayé d'implémenter quelque chose de similaire en utilisant (define (ignore x) (if true void x)) mais il évalue toujours x.Y a-t-il une fonction ignorer dans Racket?

+5

Racket est un langage strictement évalué, donc vous ne pouvez pas faire ce que vous décrivez avec une fonction, mais vous pouvez le faire avec une macro. Par exemple, quelque chose comme '(define-syntax-rule (ignore x) (void))' devrait faire ce que vous attendez. C'est une macro assez inutile, cependant. –

+0

Juste ce dont j'avais besoin, merci. – podington

+0

Pourquoi ne pas simplement supprimer le formulaire si ce n'est pas censé être là? – Sylwester

Répondre

1

Vous pouvez également utiliser

(when #f x) 

qui ne nécessite pas de définition de la macro. Cela a l'avantage que quelqu'un qui lit votre code n'a pas à regarder la définition de votre macro.

La raquette possède la macro de lecture #; pour commenter les expressions; examinez si cela pourrait avoir un sens. Par exemple,

> (+ 1 2 #;3 4) 
7