Clojure-like destructuring in brev
I’ve been learning Clojure and it’s pretty fun because a lot of design decisions are similar to brev. I really like Clojure a lot.
One thing Clojure is famous for is its destructuring function definitions. That’s something brev can do as well, although the more direct inspiration was Haskell.
Here is an example:
(define fruit-color (call-table))
(fruit-color 'banana 'yellow)
(fruit-color 'apple 'red)
(fruit-color 'pear 'green)
(define (basket-color-inspect ('shopping-basket (= fruit-color color)))
(print "The shopping basket has a " color " fruit."))
(basket-color-inspect '(shopping-basket apple))
This prints out:
The shopping basket has a red fruit.
Here is another example:
(define computer-color (call-table))
(computer-color 'apple 'bondi)
(define leaf-color (call-table))
(leaf-color 'apple 'green)
(define (basket-apple-inspect ('shopping-basket (= (fn (x 'apple)) color)))
(print "The shopping basket has a " color " apple."))
(basket-apple-inspect `(shopping-basket ,leaf-color))
That prints out:
The shopping basket has a green apple.