[racket-dev] [plt] Push #28829: master branch updated
(I must have missed that suggestion, sorry.)
I don't object to the sentiment behind the name, but I feel like we
have not figured out the best way to do assertions or invariants and
so we should leave such a valuable name for a future
contributor/insight and use the more "ugly" name for this one.
Even if that name ends up in a different library, I wouldn't want an
assertion/invariant library to conflict with racket/contract.
Robby
On Sun, Jun 1, 2014 at 6:57 PM, Matthias Felleisen <matthias at ccs.neu.edu> wrote:
>
> I suggested exactly that name in a private message to Robby.
>
>
>
> On Jun 1, 2014, at 7:49 PM, Jay McCarthy wrote:
>
>> Based on this commit, I feel like "assert" would be a better name than
>> "invariant-assertion". I can imagine putting these on various internal
>> parts of a function where the self-blame would be justified. The
>> (define id (assert ctc e)) pattern is just one common use.
>>
>> Jay
>>
>> On Sat, May 31, 2014 at 1:46 PM, <matthias at racket-lang.org> wrote:
>>> matthias has updated `master' from 9d94ef725e to 89dea63995.
>>> http://git.racket-lang.org/plt/9d94ef725e..89dea63995
>>>
>>> =====[ One Commit ]=====================================================
>>> Directory summary:
>>> 84.2% pkgs/racket-pkgs/racket-doc/scribblings/reference/
>>> 11.0% racket/collects/racket/contract/private/
>>> 4.6% racket/collects/racket/contract/
>>>
>>> ~~~~~~~~~~
>>>
>>> 89dea63 Matthias Felleisen <matthias at racket-lang.org> 2014-05-31 15:45
>>> :
>>> | removed _contract_ language from _invariant-..._ as much as possible
>>> |
>>> | added a hint as to why the error message uses the inappropriate contract language
>>> :
>>> M racket/collects/racket/contract/private/base.rkt | 4 ++--
>>> M racket/collects/racket/contract/region.rkt | 2 +-
>>> M .../scribblings/reference/contracts.scrbl | 22 ++++++++++----------
>>>
>>> =====[ Overall Diff ]===================================================
>>>
>>> pkgs/racket-pkgs/racket-doc/scribblings/reference/contracts.scrbl
>>> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>>> --- OLD/pkgs/racket-pkgs/racket-doc/scribblings/reference/contracts.scrbl
>>> +++ NEW/pkgs/racket-pkgs/racket-doc/scribblings/reference/contracts.scrbl
>>> @@ -1509,24 +1509,24 @@ The @racket[define-struct/contract] form only allows a subset of the
>>> (make-salmon #f 'pacific)
>>> ]}
>>>
>>> - at defform[(invariant-contract contract-expr expr)]{
>>> - Establishes an invariant of @racket[expr], determined by @racket[contract-expr].
>>> + at defform[(invariant-assertion invariant-expr expr)]{
>>> + Establishes an invariant of @racket[expr], determined by @racket[invariant-expr].
>>>
>>> - Unlike other ways to attach contracts to values, an
>>> - @racket[invariant-contract] does not establish a boundary
>>> - between two parties. Instead, it simply puts the contract
>>> - on the value, treating the module containing the
>>> - @racket[invariant-contract] expression as the party to be blamed
>>> - for any violations of the contract.
>>> + Unlike the specification of a contract, an
>>> + @racket[invariant-assertion] does not establish a boundary
>>> + between two parties. Instead, it simply attaches a logical assertion
>>> + to the value. Because the form uses contract machinery to check the
>>> + assertion, the surround module is treated as the party to be blamed
>>> + for any violations of the assertion.
>>>
>>> - This means, for example, that the contract is checked on
>>> + This means, for example, that the assertion is checked on
>>> recursive calls, when an invariant is used on the right-hand
>>> - side of a definition.
>>> + side of a definition:
>>>
>>> @examples[#:eval
>>> furlongs->feet-eval
>>> (define furlongss->feets
>>> - (invariant-contract
>>> + (invariant-assertion
>>> (-> (listof real?) (listof real?))
>>> (λ (l)
>>> (cond
>>>
>>> racket/collects/racket/contract/private/base.rkt
>>> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>>> --- OLD/racket/collects/racket/contract/private/base.rkt
>>> +++ NEW/racket/collects/racket/contract/private/base.rkt
>>> @@ -3,7 +3,7 @@
>>> (provide contract
>>> (rename-out [-recursive-contract recursive-contract])
>>> current-contract-region
>>> - invariant-contract)
>>> + invariant-assertion)
>>>
>>> (require (for-syntax racket/base syntax/name syntax/srcloc)
>>> racket/stxparam
>>> @@ -89,7 +89,7 @@
>>> (procedure-rename new-val vs-name)])]
>>> [else new-val])))
>>>
>>> -(define-syntax (invariant-contract stx)
>>> +(define-syntax (invariant-assertion stx)
>>> (syntax-case stx ()
>>> [(_ ctc e)
>>> (quasisyntax/loc stx
>>>
>>> racket/collects/racket/contract/region.rkt
>>> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>>> --- OLD/racket/collects/racket/contract/region.rkt
>>> +++ NEW/racket/collects/racket/contract/region.rkt
>>> @@ -4,7 +4,7 @@
>>> define/contract
>>> with-contract
>>> current-contract-region
>>> - invariant-contract)
>>> + invariant-assertion)
>>>
>>> (require (for-syntax racket/base
>>> racket/struct-info
>>
>>
>>
>> --
>> Jay McCarthy <jay at cs.byu.edu>
>> Assistant Professor / Brigham Young University
>> http://faculty.cs.byu.edu/~jay
>>
>> "The glory of God is Intelligence" - D&C 93
>
>
> _________________________
> Racket Developers list:
> http://lists.racket-lang.org/dev