robert-strandh / SICL

A fresh implementation of Common Lisp
Other
1.07k stars 79 forks source link

Add some type declarations and do some cleanup. #4

Closed Bike closed 11 years ago

Bike commented 11 years ago

Untested, but the previous version was invalid, so I'm not too worried

With types you kind of have to strike a balance between user readability and readability by program analyzers, and with the latter there's another question, of how much information to include. In the limit, especially, a function type totally specifies the function's behavior.

I've tried to do ok mixing up all of these. This involves a lot of deftypes, but I don't think that should be too concerning. Many but not all of these types mostly correspond to definitions from the CLHS glossary and I have marked them as such.

Cleanup stuff: Fixed invalid use of &key in function types, a few very slightly wrong definitions, etc.

Content stuff: Added the rest of "F" alphabetically.

Last philosophical note - would be nice to have these types both spread out with the function definitions, and in a centrally accessible area. Possibly something like pjb's computer-readable Lisp specification.