From c90f0235a61068edd431c78817d8214db08bac96 Mon Sep 17 00:00:00 2001 From: AlexKnauth Date: Wed, 19 Aug 2015 19:02:56 -0400 Subject: [PATCH] add reverse-lens and last-lens --- unstable/lens/list.rkt | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 unstable/lens/list.rkt diff --git a/unstable/lens/list.rkt b/unstable/lens/list.rkt new file mode 100644 index 0000000..aaece86 --- /dev/null +++ b/unstable/lens/list.rkt @@ -0,0 +1,31 @@ +#lang racket/base + +(require racket/contract/base) +(provide (contract-out + [reverse-lens + (lens/c list? list?)] + [last-lens + (lens/c list? any/c)] + )) + +(require lens/base/main + lens/list/main + lens/compound/main + "isomorphism/base.rkt" + ) + +(module+ test + (require rackunit fancy-app)) + +(define reverse-lens + (isomorphism-lens reverse reverse)) + +(define last-lens + (lens-thrush reverse-lens first-lens)) + +(module+ test + (check-equal? (lens-view reverse-lens '(1 2 3)) '(3 2 1)) + (check-equal? (lens-transform reverse-lens '(1 2 3) (cons 4 _)) '(1 2 3 4)) + (check-equal? (lens-view last-lens '(1 2 3)) 3) + (check-equal? (lens-set last-lens '(1 2 3) 'a) '(1 2 a)) + )