[plt-scheme] The contract

From: yug at ios.ac.cn (yug at ios.ac.cn)
Date: Mon Dec 17 09:22:54 EST 2007

Thanks!! Robby

The right def is

(call/input-url (string->url "https://210.77.16.29/php/user_login.php")
                  (case-lambda
                    [(url) (post-impure-port url data rhead)]
                    [(url rhead) (post-impure-port url data rhead)])
                  display-pure-port
                  )

On Dec 17, 2007 10:15 PM, Robby Findler <robby at cs.uchicago.edu> wrote:

> The contract is insisting that you provide a function that accepts
> *both* one argument and two arguments.
>
> Robby
>
> On Dec 17, 2007 8:13 AM,  <yug at ios.ac.cn> wrote:
> > Hi,
> >
> >   I'm fresh to contracts. Here is my problem:
> >
> > I just want to pass the contracts check on the following definition:
> >
> >  (define test (lambda (url)
> >                  (post-impure-port url data rhead)))
> >
> > (provide/contract (test (-> url? input-port?)))
> >
> > (call/input-url (string->url "https://210.77.16.29/php/user_login.php")
> test
> > display-pure-port)
> >
> > or even more simplified:
> >
> > (call/input-url (string->url "https://210.77.16.29/php/user_login.php")
> >                    (lambda (url)
> >                        (post-impure-port url data rhead)))
> >                   display-pure-port)
> >
> > Every time, I get:
> >   (case->
> >     (->
> >      url?
> >      (case->
> >        (-> url? input-port?)
> >        (-> url? (listof string?) input-port?))
> >      (-> input-port? any)
> >      any)
> >     (->
> >      url?
> >      (case->
> >        (-> url? input-port?)
> >        (-> url? (listof string?) input-port?))
> >      (-> input-port? any)
> >      (listof string?)
> >      any))
> > on call/input-url; expected a procedure that accepts 2 arguments, given:
> > #<procedure:test>
> >
> > If I change the definition to
> > (call/input-url (string->url " https://210.77.16.29/php/user_login.php")
> >                   (lambda (url rhead)
> >                     (post-impure-port url data rhead)
> >                     )
> >                   display-pure-port
> >                   )
> > . . ssl-url.scm:40:4: /home/yug/ssl-url.scm:40:4: top-level broke the
> > contract
> >   (case->
> >     (->
> >      url?
> >      (case->
> >        (-> url? input-port?)
> >        (-> url? (listof string?) input-port?))
> >      (-> input-port? any)
> >      any)
> >     (->
> >      url?
> >      (case->
> >        (-> url? input-port?)
> >        (-> url? (listof string?) input-port?))
> >      (-> input-port? any)
> >      (listof string?)
> >      any))
> > on call/input-url; expected a procedure that accepts 1 arguments, given:
> > #<procedure>
> > >
> >
> > How can I define my function?
> >
> > Thanks
> >
> > --
> > Gang
> > _________________________________________________
> >   For list-related administrative tasks:
> >   http://list.cs.brown.edu/mailman/listinfo/plt-scheme
> >
> >
> _________________________________________________
>  For list-related administrative tasks:
>  http://list.cs.brown.edu/mailman/listinfo/plt-scheme
>



-- 
Gang
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.racket-lang.org/users/archive/attachments/20071217/78dcccf2/attachment.html>

Posted on the users mailing list.