[racket] why is the comparimng always false

 From: Matthias Felleisen (matthias at ccs.neu.edu) Date: Wed Jun 27 09:56:54 EDT 2012 Previous message: [racket] why is the comparimng always false Next message: [racket] why is the comparimng always false Messages sorted by: [date] [thread] [subject] [author]

```
1. You got trapped in a strange corner of the language:

-- to ask whether some value is a a Vcat you should use Vcat?
-- BSL should not really allow you to say 'Vcat' all by itself.
[I need to investigate this problem. Sadly it is not a bug.]

2. Try to understand this:

(define-struct Vcat [x happiness])
;; A Vcat is (make-Vcat Number Number)

(define-struct Vcham [x happiness])
;; A Vcham is (make-Vcat Number Number)

;; An Animal is one of:
;; -- (make-Vcat Number Number)
;; -- (make-Vcham Number Number)

;; Animal -> Number
;; compute the sum of the x location and the degree of happiness

(check-expect (happiness-quotient (make-Vcham 10 20)) 30)
(check-expect (happiness-quotient (make-Vcat 10 100)) 110)

(define (happiness-quotient a)
(cond
[(Vcat? a) (+ (Vcat-x a) (Vcat-happiness a))]
[(Vcham? a) (+ (Vcham-x a) (Vcham-happiness a))]))

On Jun 27, 2012, at 5:08 AM, Roelof Wobben wrote:

> Hello,
>
> I try to figure out how I can check if a struct is a Vcat or a Vcham.
> So i tried this:
>
> ; – a VCham
> (define-struct Vanimal (animal))
>
>
> ; a struct has two parts ( the x-coordinate of a cat and the happiness of the cat)
> (define-struct Vcat [x happiness])
> ; make Vcat : number (x) number (h)
> ; Vcat x -> number
> ; Vcat h -> number
> ; Any Vcat? -> Boolean
>
> ; a struct has two parts ( the x-coordinate of a kamneleon and the happiness of the kameleon)
> (define-struct Vcham [x happiness])
> ; make Vcham : number (x) number (h)
> ; Vcham x -> number
> ; Vcham -> number
>
> ; Vanimal -> Boolean
> ; Function which cehcks if a struct is a Vcat
> (check-expect (check (make-Vanimal(make-Vcat 0 100))) true)
> (check-expect (check (make-Vanimal(make-Vcham 0 100))) false)
> (define (check s)
> ( equal? s Vchat)
>
> (check(make-Vanimal (make-Vcat 0 100)))
>
>
> But the answer is false not mather if the struct is a Vchat or a Vcham.
> Where am I missing something.
>
> Roelof
>
>
>
> ____________________
> Racket Users list:
> http://lists.racket-lang.org/users

```

 Posted on the users mailing list. Previous message: [racket] why is the comparimng always false Next message: [racket] why is the comparimng always false Messages sorted by: [date] [thread] [subject] [author]