Re: [racket-dev] define-struct exports something to BSL

2010-09-22 Thread Michael Sperber

Nadeem Abdul Hamid nad...@acm.org writes:

 Consider a beginner file with:
(define-struct boa (name length))

 Student writes a template/function with parameter named a-boa, but
 misspells one occurrence, writing boa instead of a-boa.

 (define (feed a-boa)
   (make-boa (boa-name a-boa)
 (boa-length boa)))

 Their tests then fail at runtime with:
boa-length: expects argument of type struct:boa; given (make-signature 
 ...)

 Why is boa as a type visible at all in the student languages? The
 make-signature thing is really confusing, because they recognize it as
 something like a constructor but they don't know what structure it
 corresponds to.

This is my fault: We're working on something called signatures, which
can take the place of a contract comment, but is instead checked by the
system.  For example, one could write for the functions above:

(: make-boa (string number - boa))
(: boa-name (boa - string))
(: boa-length (boa - number))
(: feed (boa - boa))
 ^^^

This is why `boa' is available, and why you get output identifying boa
as a signature.  (Before the introduction of signatures, it would say
illegal use of syntax - I'm not sure that's much better.)

The work on signatures is not quite done yet (and undocumented ...), but
we're working hard on completing it in the near future.

-- 
Cheers =8-} Mike
Friede, Völkerverständigung und überhaupt blabla
_
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev


[racket-dev] define-struct exports something to BSL

2010-09-21 Thread Nadeem Abdul Hamid
Consider a beginner file with:
   (define-struct boa (name length))

Student writes a template/function with parameter named a-boa, but
misspells one occurrence, writing boa instead of a-boa.

(define (feed a-boa)
  (make-boa (boa-name a-boa)
(boa-length boa)))

Their tests then fail at runtime with:
   boa-length: expects argument of type struct:boa; given (make-signature ...)

Why is boa as a type visible at all in the student languages? The
make-signature thing is really confusing, because they recognize it as
something like a constructor but they don't know what structure it
corresponds to.

--- nadeem
_
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev