[racket] function equality with contracts

From: Robby Findler (robby at eecs.northwestern.edu)
Date: Mon Jan 24 16:20:50 EST 2011

No.

Consider instead using structure properties to make a value that can
be applied like a function but has other accessors that led you define
how you want equality to work.

Robby

On Mon, Jan 24, 2011 at 3:15 PM, Eric Tanter <etanter at dcc.uchile.cl> wrote:
> Sorry, I don't get it. I'm not asking from a theoretical point of view, but from a very practical, racket point of view, of two functions being eqv.
>
> Concretely:
> ;; tmp.rkt
> #lang racket
> (define f (λ (x) x))
> (define ((pred f1) f2) (eqv? f1 f2))
> (define eq-f (pred f))
> (provide/contract [f (-> integer? integer?)])
> (provide eq-f)
>
> ;;tmp2.rkt
> #lang racket
> (require "tmp.rkt")
> (eq-f f)
>
> -> is there a way to get that last call return #t?
>
> -- Éric
>
> On Jan 24, 2011, at 5:56 PM, Matthias Felleisen wrote:
>> On Jan 24, 2011, at 2:41 PM, Eric Tanter wrote:
>>> Hi all,
>>>
>>> From the DLS'10 paper of Stephen and Matthias, it says "the class system must determine that two classes are equal modulo contract wrapping".
>>>
>>> I'm interested in that exact property but for functions. Ie. how do we determine if two functions are "equal" modulo contract wrapping?
>>
>> eta-expansion? proxy-lambda?
>>
>>
>>>
>>> Thanks!
>>>
>>> -- Éric
>>> _________________________________________________
>>> For list-related administrative tasks:
>>> http://lists.racket-lang.org/listinfo/users
>>
>>
>
> _________________________________________________
>  For list-related administrative tasks:
>  http://lists.racket-lang.org/listinfo/users


Posted on the users mailing list.