0:55:47Guest74I'm thinking mainly of my repl use. But I'm sure many others don't care about manipulating their wm from the repl.
0:57:54Guest74The only hesitance I have with keywords is how do I display them in gui tools. As a keyword? or as the symbol-name? keyword might look weird, a symbol-name might be misleading. Or once again i'm overthinking it.
2:25:13sm2nI'm writing a (s-exp based of course) DSL, and trying to understand different approaches. One way to do it would be to just have a macro that expands out the entire thing, but another approach I was considering was to basically write a simple interpreter that has a compiler macro, which could be expanded recursively.
2:25:31sm2nDoes anyone have any thoughts or recommendations for this?
2:26:09White_Flameit all depends on the complexity you want. macroexpansion is fine for literal expansion with no further analysis
2:26:51White_Flamebut really, any analysis you perform could either be done at compile time or at evaluation time, all depends on where the function calls are made
2:28:06White_Flamebut once your macro reaches a certain size, it's certainly helpful to break out a bunch of functions to handle the various subclauses. these functions can either be called by the macroexpander, or by the expanded code, or externally if your macro just generates a datastructure
2:30:35sm2nSo, no real point to the compiler macro approach?
2:35:20Josh_2if you have a macro that expands out the entire thing then it should be trivial to add a compiler macro
3:33:03White_Flamesm2n: oh sorry, didn't read that as "compiler macro" originally. I haven't done that approach
5:22:31mfianoMy original solution was to do it without walking twice. I'm not sure how remove-if/delete-if is usually implemented, but that is certainly more readable, if not more efficient than that one ^
5:23:38White_Flameif you walk once, you're going to be allocating as you go, and tail share the rest. if the element is not found, then those copies are redundant
5:24:04mfianoWell the above is going to fail in similar ways
5:27:23White_Flameyou can (let ((temp-list (cons nil list))) ...setf cdr stuff... (cdr temp-list)) to operate in full cdr mode without special case for removing the head
5:28:25White_Flamebonus points for making the temp-list cell dynamic-extent
5:29:59mfianoToo tired to even think about n=0 edge case in Bike's latest code, without branching
5:42:28White_Flamejust add a cons cell to the head, and lop it off at the end