# HG changeset patch # User Steve Losh # Date 1467486481 0 # Node ID 6f99041a367f3f36e38abe29ba811c5865b91928 # Parent 003328260d659a67d74619612846651f835a101a Update diff -r 003328260d65 -r 6f99041a367f README.markdown --- a/README.markdown Sat Jul 02 11:44:32 2016 +0000 +++ b/README.markdown Sat Jul 02 19:08:01 2016 +0000 @@ -328,3 +328,27 @@ I admit I did twitch a bit when I saw the infix `(('speaker 'health) > 0.5)` notation in their Scheme-like dialog scripting language -- I guess even Naughty Dog isn't perfect, hah. +* Shaved a yak related to packages in [cl-nrepl][] that I've been meaning to get + to for a long time. Really I need to rewrite that whole project now that + I'm not a complete noob in Common Lisp. +* Did episode 32 in [Coding Math][]. I decided to use Common Lisp's multiple + return values for everything this time instead of taking/returning vectors + everywhere, just to see how it felt. + + Implementing the core functions felt really nice with multiple values, but + when it came to the drawing code things got a bit more awkward. Needing to + use `multiple-value-(call/bind)` to get things done is kind of a pain in CL + because of how verbose things can get. I could make some read macros to ease + the pain, but it's probably not worth it. + + I'm trying to come up with a good rule of thumb for when to use multiple + values and when not to. Multiple value return obviously only gives you one + level of "hierarchy" to work with, so e.g. instead of `(values x1 y2 x2 y2)` + it's probably better to do `(values point1 point2)`. Also if the items are + the same "importance" it's probably also better to just return a structure of + some kind -- the fact that CL treats the value first differently makes it seem + like it's special when really `point1` isn't any more important than `point2`. + + I think the general rule I'll follow (for now) is to use multiple value + returns very sparingly, and only when one of the values is different than the + rest and is obviously the "most important" one.