2010-09-22 4 views
1

Je commence juste avec Lisp et j'ai besoin d'aide. Ce qui est techniquement devoirs, mais je lui ai donné un essai et je suis un peu ce que devient je voulais:Afficher une chaîne tout en utilisant cond dans Lisp

(defun speed (kmp) 
    (cond ((> kmp 100) "Fast")  
     ((< kmp 40) "Slow") 
     (t   "Average"))) 

Cependant, si je lance le programme, il affiche "Average" au lieu de simplement Average (sans les guillemets).

Comment puis-je l'obtenir pour afficher la chaîne sans guillemets?

Répondre

1

Vous pouvez également utiliser des symboles au lieu de chaînes:

(defun speed (kmp) 
    (cond ((> kmp 100) 'fast)  
     ((< kmp 40) 'slow) 
     (t   'average))) 

Les symboles sont convertis en majuscules par défaut, en interne est rapide puis FAST.

Vous pouvez écrire un symbole dans tous les cas et avec des caractères à l'aide échapper à barres verticales:

|The speeed is very fast!| 

Au-dessus est un symbole valide en Common Lisp et est stocké en interne comme vous écrivez avec le cas préservé.

2

La boucle read-eval-print affiche la valeur de retour de votre fonction, qui est l'une des chaînes d'une branche cond. Les chaînes sont imprimées lisiblement en les entourant de guillemets.

Vous pouvez utiliser (chaîne d'écriture (vitesse 42)). Ne vous inquiétez pas qu'il affiche également la chaîne entre guillemets doubles - c'est la valeur de retour de la chaîne d'écriture, affichée après la sortie de la Quotresse.

3

Vous pouvez utiliser des symboles au lieu de chaînes. Mais gardez à l'esprit que les symboles seront convertis en majuscules:

> 'Average 
AVERAGE 

Si vous vous souciez de cas ou si vous voulez intégrer des espaces, utilisez format:

> (format t "Average") 
Average 
Questions connexes