On Jul 5, 2014, at 2:25 PM, Alexander D. Knauth wrote:
> On Jul 5, 2014, at 12:10 PM, Brian Adkins <racketus...@lojic.com> wrote:
> 
>> I've modified the code with Matthias' feedback and a brief reading of the 
>> style guide. I must have been confused on the use of "local". I got the 
>> impression that it was required if you wanted to (define (foo arg ...)) 
>> within another function, but I took it out, and everything works fine. Maybe 
>> local is only required for circumstances that I haven't hit yet. The 
>> rank-restaurants functions is nicer looking w/o the local.
> 
> I’m pretty sure that local is never required for that in any circumstances.  
> 
> See http://lists.racket-lang.org/users/archive/2013-November/060352.html

Thanks - that's good to know. I probably just saw it in HTDP and made an 
assumption about it's necessity.

>> Is match typically used to destructure lists?
> 
> Match can be used for a lot of things, but (looking ahead) you might want to 
> look at one of the match-lambda s:
> 
> http://docs.racket-lang.org/reference/match.html?q=match-lambda#%28form._%28%28lib._racket%2Fmatch..rkt%29._match-lambda%29%29
> 
> Probably the one you want is either match-lambda* or maybe match-lambda**.

The various match-lambdas got me closer. I haven't found one w/o an extra set 
of [ ] or ( ) yet, but if I don't, I think I can make a macro for it after 
gaining some experience to allow the following:

(define foo 
  (my-match-lambda ((arg1 _ arg2) arg3)
    (bar arg1 arg2 arg3)))

instead of:

(define foo 
  (match-lambda* [(list (list arg1 _ arg2) arg3)
                  (bar arg1 arg2 arg3)]))

Unless I'm missing something, that seems to be a fairly straightforward 
transformation.


____________________
  Racket Users list:
  http://lists.racket-lang.org/users

Reply via email to