diff --git a/lens/private/dict.rkt b/lens/private/dict.rkt index fbf15c7..b6c1f06 100644 --- a/lens/private/dict.rkt +++ b/lens/private/dict.rkt @@ -6,7 +6,7 @@ (-> any/c (lens/c functional-dict? any/c))] )) -(require racket/dict fancy-app "base/main.rkt") +(require lens/private/util/functional-dict racket/dict fancy-app "base/main.rkt") (module+ test (require rackunit)) @@ -14,9 +14,6 @@ (make-lens (dict-ref _ key) (dict-set _ key _))) -(define (functional-dict? v) - (and (dict? v) (dict-can-functional-set? v))) - (module+ test (check-equal? (lens-transform/list '((a . 1) (b . 2) (c . 3)) (dict-ref-lens 'a) (* 100 _)) '((a . 100) (b . 2) (c . 3)))) diff --git a/lens/private/util/functional-dict.rkt b/lens/private/util/functional-dict.rkt new file mode 100644 index 0000000..7a1448a --- /dev/null +++ b/lens/private/util/functional-dict.rkt @@ -0,0 +1,15 @@ +#lang sweet-exp racket/base + +provide functional-dict? + +require racket/dict +module+ test + require rackunit + +(define (functional-dict? v) + (and (dict? v) (dict-can-functional-set? v))) + +module+ test + (check-true (functional-dict? (hash 'a 1 'b 2))) + (check-true (functional-dict? '((a . 1) (b . 2)))) + (check-false (functional-dict? (make-hash '((a . 1) (b . 2)))))