[plt-scheme] Is there a general overview of contracts somewhere?
On Apr 17, jekwtw wrote:
>
> Yes, it's pretty clear that CL implementors typically *use* type
> specs as pragmas for efficiency; however, the standard *does* say
> that contexts that violate type specs are absolutely in error, but
> conforming implementations are not *required* to detect the errors.
> Thus there could be high-quality implementations in which type specs
> are taken seriously.
On a Lisp system (I think it's still an imaginary one, no?) you still
don't have the higher-order stuff.
On Apr 17, jekwtw wrote:
>
> You're right about the usual practice, but I think it's more a
> matter of advantage being taken of a loophole than intent as such.
> As I said in an earlier response, the CL spec says unequivocally
> that contexts that violate a type spec are erroneous; the loophole
> is that an implementation need not detect the errors to be
> conforming.
It's not a loophole if it was put there *intentionally*.
> BTW, since the CL type system "seamlessly" (it says so right here in
> the label :-) integrates CLOS, I believe type specs can be used with
> methods, generic functions, and classes.
They can, but this "seamlessly" is a by-product of having types in
your language. This is how Swindle exposes primitive types as
classes, and AFAIK, it's done in the same way with CLOS.
--
((lambda (x) (x x)) (lambda (x) (x x))) Eli Barzilay:
http://www.barzilay.org/ Maze is Life!