On 06/15/2012 01:12 PM, Asumu Takikawa wrote:
Hi all,

Recently I was using the `stx-car` function from `syntax/stx`. At some
point, I had called it on a non-syntax pair and the error message came
from `car`, which is used inside the implementation of `stx-car`.

I thought it would be nice to add contracts in `syntax/stx` for better
error messages, but it turns out that the contract library depends on it
and so it's impossible to do without introducing cycles.

So I would like to propose a `syntax/syntax` library with the following:
   * provides `syntax/stx` functions with contracts attached
     (caveat: core libraries like `racket/contract` would still use
              `syntax/stx`)
   * for consistency with the rest of the language,  `stx-car` and
     friends would be renamed to use the `syntax-` prefix instead of
     `stx-`.

-1

The 'stx-*' functions work on values that aren't syntax objects, so renaming them to 'syntax-*' would be misleading. Also, 'syntax->list' already exists and means something different from 'stx->list'.

Roughly,

  stx = syntax | null | (cons syntax stx)

--

I sometimes wonder if we should make a racket/pre-contracts subcollection and just stuff all of racket/contract/base's dependencies in there, then say everything else is allowed (maybe even expected) to use contracts.

Ryan
_________________________
 Racket Developers list:
 http://lists.racket-lang.org/dev

Reply via email to