💾 Archived View for idiomdrottning.org › call-table-literals captured on 2022-07-16 at 14:05:10. Gemini links have been rewritten to link to archived content
⬅️ Previous capture (2021-12-03)
-=-=-=-=-=-=-
ct, ctq, ct* and ctq* are sugar for creating a call-table with some values already filled.
The q variants are implicitly quasiquoted while the non-q variants aren’t.
I.e.
(let ((banana-color 'yellow)) (ctq banana ,banana-color apple red))
is equivalent to
(let ((banana-color 'yellow)) (call-table seed: `((banana . ,banana-color) (apple . red))))
and
(let ((banana-color 'yellow)) (ct 'banana banana-color 'apple 'red))
The * variants create call-table* instances instead.
These call-tables aren’t closed, you can add more keys and values to them.
In brev-separate from version 1.42.
Our first example from our last post becomes:
(define (basket-color-inspect ('shopping-basket (= (ctq banana yellow apple red pear green) color))) (print "The shopping basket has a " color " fruit.")) (basket-color-inspect '(shopping-basket apple))
That prints:
The shopping basket has a red fruit.
ct is kinda like the curly-braced map literals in Clojure.