Monorepo for Aesthetic.Computer
aesthetic.computer
Research: Alias for repeat in KidLisp#
Date: October 1, 2025
Goal: Find a shorter, more ergonomic alias for the repeat word in KidLisp
Background#
The current repeat word is functional but at 6 characters, it's a bit long for such a commonly used construct. We want to add an alias that's:
- Shorter and more ergonomic
- Kid-friendly and intuitive
- Respectful of Lisp traditions (where applicable)
- Fun and fitting with KidLisp's playful aesthetic
Lisp Dialect Survey#
Common Lisp#
loop- Extremely powerful macro with complex DSL syntaxdotimes- Standard form:(dotimes (var count) body)do- General iteration with complex binding syntaxdolist- Iterate over lists
Scheme#
do- General iteration macrodotimes- Available in some implementations (not standard)repeat- Used in SRFI-42 (Eager Comprehensions)- Named
let- Common idiom for loops via recursion
Clojure#
dotimes-(dotimes [i n] body)- iterate n timesdoseq- Sequence iterationloop/recur- Tail-recursive iteration
Logo (Kid-Friendly Language)#
repeat-repeat 10 [forward 50 right 36]- This is exactly what KidLisp currently uses!
Other Languages#
times- Ruby uses this:10.times { ... }for- Traditional in many languages but not very Lisp-yeach- Usually implies iterating over a collection
Proposed Options#
1. times ⭐ RECOMMENDED#
Pros:
- Natural English: "do this 10 times"
- 5 characters (1 shorter than repeat)
- Kid-friendly and intuitive
- Used in Ruby with similar meaning
- Reads well:
(times 100 (box x y 10 10))
Cons:
- Not traditional Lisp terminology
- Could potentially conflict with multiplication context
2. dotimes#
Pros:
- Classic Lisp terminology (Common Lisp, Clojure)
- Well-established meaning
- Unambiguous
Cons:
- Actually LONGER than repeat (7 chars vs 6)
- Defeats the purpose of an alias
3. rep#
Pros:
- Shortest option (3 characters)
- Clear abbreviation of repeat
- Very ergonomic
Cons:
- Feels a bit too abbreviated
- Could be confused with "representative" or other meanings
- Less intuitive for kids
4. bunch#
Pros:
- Whimsical and fun
- Fits KidLisp aesthetic
- 5 characters
- Unique to KidLisp
Cons:
- No precedent in other languages
- "Bunch" typically means "a group" not "multiple times"
- Could be semantically confusing
5. loop#
Pros:
- 4 characters - very short
- Universal concept
- Common Lisp uses it
Cons:
- In Common Lisp,
loopis a complex macro with DSL - Might set wrong expectations
- Generic term that could be used for other loop types later
Recommendation: FINAL#
Initial recommendation was times, but that reads backward. Then rep, but that's not a full word.
Final Recommendation: bunch ⭐#
bunch is the perfect choice because:
- Contextual meaning: "Bunching together" Lisp expressions/clods - captures the essence of repetition in a Lisp context
- Playful and unique: Fits KidLisp's whimsical, creative aesthetic perfectly
- Shorter: 5 characters vs 6 for repeat
- Complete word: Real word that's kid-friendly and intuitive
- Natural ordering: "bunch 10" reads well - "bunch 10 (of these together)"
- Unambiguous: Won't conflict with other potential language features
Why not other options:#
times: Reads backward "(times 10)" vs English "10 times" ✗rep: Not a complete word, abbreviation isn't intuitive ✗loop: Generic, less creative than bunchdotimes: Longer than repeat (defeats the purpose)- Keep
repeat: Valid but we want something shorter and more fun
Implementation Plan#
- Add
bunchas an alias torepeatin the specialForms object - Update documentation to mention both forms
- Keep
repeatas primary documentation form (Logo tradition, fully spelled out) - Both
repeatandbunchwill work identically
Example Usage#
; Current syntax (still works, recommended for documentation)
(repeat 100 (box (wiggle width) (wiggle height) 10 10))
; New shorter alias - "bunching together" code clods!
(bunch 100 (box (wiggle width) (wiggle height) 10 10))
; With iterator - both forms
(repeat height i
(ink rainbow)
(line 0 i width i))
(bunch height i
(ink rainbow)
(line 0 i width i))
Philosophy#
bunch perfectly captures the Lisp philosophy of "bunching together" expressions. When you use (bunch 10 ...), you're literally creating a bunch of 10 instances of those code clods, executed together. It's playful, memorable, and uniquely KidLisp!