From e2037841fe16dfa5c7cb8f58ee16d3477ff06819 Mon Sep 17 00:00:00 2001 From: Jack Firth Date: Sun, 5 Jul 2015 15:09:17 -0700 Subject: [PATCH] Fix pair lenses --- lenses/list/car-cdr.rkt | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/lenses/list/car-cdr.rkt b/lenses/list/car-cdr.rkt index d534ad7..c03a414 100644 --- a/lenses/list/car-cdr.rkt +++ b/lenses/list/car-cdr.rkt @@ -2,16 +2,21 @@ (provide car-lens cdr-lens) -(require racket/match - fancy-app - "../core/main.rkt" - ) +(require "../core/main.rkt") -(define (car-lens v) - (match-define (cons car cdr) v) - (values car (cons _ cdr))) ; fancy-app +(module+ test + (require rackunit)) -(define (cdr-lens v) - (match-define (cons car cdr) v) - (values cdr (cons car _))) +(define (set-car pair v) + (cons v (cdr pair))) + +(define (set-cdr pair v) + (cons (car pair) v)) + +(define car-lens (make-lens car set-car)) +(define cdr-lens (make-lens cdr set-cdr)) + +(module+ test + (check-equal? (lens-view car-lens '(1 . 2)) 1) + (check-equal? (lens-view cdr-lens '(1 . 2)) 2))