J'ai récemment découvert qu'il est possible d'ajouter des restrictions de type aux structs, mais pour une raison quelconque, cela n'autorise pas les 0.0
comme une valeur par défaut légale pour les flottants courts, mais elle autorise 100.0
.
J'obtiens l'erreur suivante lorsque j'essaie d'exécuter make-ship
pour créer une instance d'un ship
en CLisp :
[4]> (make-ship)
*** - THE: #:ENERGY evaluated to the values (0.0), not of type SHORT-FLOAT
The following restarts are available:
ABORT :R1 Abort main loop
Quelqu'un peut-il m'expliquer ce qui se passe exactement, et pourquoi je ne suis pas autorisé à utiliser la version 0.0 ?
Voici le code qui se comporte mal :
(defstruct ship
location ;; fields like these have an undecided type at the moment
(energy 0.0 :type short-float)
cargo
crew
shields
(hull-integrity 100.0 :type short-float))