Disclaimer: I’ve never done *any* Clojure programming, but I’m curious.
Here’s how I may model an on-screen rectangle in JavaScript, a classless object oriented language: let createRectangle = function (x, y, width, height) { return { get upperLeft() { return [x, y]; }, get lowerRight() { return [x + width, y + height]; }, get area() { return width * height; } }; }; let r = createRectangle(0, 0, 50, 20); let s = createRectangle(10, 20, 40, 5); console.log(r.upperLeft, r.lowerRight, r.area); console.log(s.upperLeft, s.lowerRight, s.area); Now I run the profiler. I discover that in the inner loop of my program there are lots of calls needing the upper left and the lower right coordinates. So I change the inner workings of the object to store these instead: let createRectangle = function (x, y, width, height) { let upperLeft = [x, y], lowerRight = [x + width, y + height]; return { get upperLeft() { return upperLeft; }, get lowerRight() { return lowerRight; }, get area() { return (lowerRight[0] - upperLeft[0]) * (lowerRight[1] - upperLeft[1]); } }; }; Boom: Now the program is twice as fast, and - what gives me great comfort - I know that this change breaks nothing. I only had to edit the code in *one* module. I didn’t need to think too much about efficiency of data structures in the beginning. I could just start going, then optimize in the end. *Can I program in a similar way using Clojure?* -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups "Clojure" group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.