# [racket] idioms for abstracting over definitions

--- 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.