(constant 'Type 1)
(define (check-type x)
(case
(Type (println "it is Type"))
(true (println "it is not Type"))))
(check-name 1)
(exit)
==> it is not Type
For: case
syntax: (case exp-switch (exp-1 body-1) [(exp-2 body-2) ... ])
The result of evaluating exp-switch is compared to each of the[size=150] unevaluated [/size]expressions exp-1, exp-2,
I want to know Why make case expression with unevaluated?
I meet this problem too, and has been waiting for answer!
case doesn't evaluate the conditions. So if you call check-type 1, it compares Type to 1, and of course they aren't the same. If you called (check-type 'Type) it would work. Or if you changed the condition to (case x (1 (println "the type is Type"))) it would work.
As for the "why"? I don't know. Perhaps it is because that is how it normally is in LISP. Ancient tradition.
If you want the condition evaluated, you can use cond instead of case.