[racket] idioms for abstracting over definitions

From: William James (w_a_x_man at yahoo.com)
Date: Tue May 8 19:29:37 EDT 2012

--- On Mon, 5/7/12, Patrick Mahoney <paddy.mahoney at gmail.com> wrote:

> Hello all, in a quest for greater concision, I'm looking for a
> way to abstract over the following code containing mostly
> definitions. Is there an accepted practice for abstraction over
> definition introduction?
> 
> 
> (define top-right-x 
>   (lambda (a-grid-plane a-cell)
>  
> The next three definitions are what I am looking to abstract
> over, as they show up in many similarly defined functions.
> 
>  (match-define (cell row-pos col-pos) a-cell)
> 
>  
>  (define cell-size (grid-plane->cell-size a-grid-plane))
>  
>  (match-define (size cell-w cell-h) cell-size)
>  
>  (+ cell-w 
>  (* col-pos cell-w))))
> 
> (define top-right-y 
> 
>  (lambda (a-grid-plane a-cell)
>  
>  (match-define (cell row-pos col-pos) a-cell)
>  
>  (define cell-size (grid-plane->cell-size a-grid-plane))
>  
>  (match-define (size cell-w cell-h) cell-size)
> 
>  
>  (* row-pos cell-w)))
> 
> How should I approach this? are my options parameters, leaving
> as is, a with- macro?


(define (get-cell-info a-cell a-grid-plane)
  (match-define (cell row-pos col-pos) a-cell)
  (define cell-size (grid-plane->cell-size a-grid-plane))
  (match-define (size cell-w cell-h) cell-size)
  (list col-pos row-pos cell-w cell-h cell-size))


In the future, make sure that your posts are in
plain text.


Posted on the users mailing list.