"Code is data" comes up in Clojure less than newcomers might expect. As a rule of thumb, it should be the last tool you reach for, as it's easier to work with data structures that have a simpler and more constrained syntax.
It's often hard to give good advice when context is lacking, but if you have a grid, and want to supply a sequence of instructions to modify it, and you want to inspect and manipulate those instructions, then I'd suggest something like: (transform (grid 10 10) [[:toggle 2 3 4 5] [:off 2 3 4 5] [:on 2 3 4 5]]) On Sun, 18 Jul 2021, at 5:40 PM, SideStep wrote: > Thanks Tania! The point I'm making is that list (data structure for > evaluatable data/code) is not easily manipulatable with code in clojure. So > much for 'code-is-data'... > Thanks for the suggestion. > In regards to rethinking it: it is supposed to be commands coming-in that > sets parts of the grid with on/off/toggle... I want to append those commands > (code) as data to the representation of a grid and evaluate the list of > commands to get the final state of the grid. > Trying to embrace this code-is-data thing here. > On Saturday, July 17, 2021 at 9:21:29 PM UTC+2 tanya.m...@gmail.com wrote: >> >> Hi, >> >> conj <https://clojuredocs.org/clojure.core/conj> adds at the end of a >> vector, but at the beginning of a list. It is how it is implemented. I think >> this >> <https://stackoverflow.com/questions/5734435/put-an-element-to-the-tail-of-a-collection> >> and this >> <https://medium.com/@greg_63957/conj-cons-concat-oh-my-1398a2981eab> sums it >> up why. >> >> You could achieve what you want by using concat >> <https://clojuredocs.org/clojure.core/concat> (note this returns a LazySeq): >> `user=> (concat grid '((off 1 2 3 6))) >> (-> (grid 10 10) (toggle 2 3 4 5) (off 2 3 4 5) (on 2 3 4 5) (off 1 2 3 6))` >> Though I'm not exactly sure what is the end goal of this but I'd rethink the >> way it is done. >> >> >> >> >> On Sat, 17 Jul 2021 at 14:24, SideStep <nesvarb...@gmail.com> wrote: >>> >>> ____ <https://stackoverflow.com/posts/68420449/timeline> >>> >>> I have a representation of a matrix in grid.clj file: >>> >>> `(-> (grid 10 10) >>> (toggle 2 3 4 5) >>> (off 2 3 4 5) >>> (on 2 3 4 5)) ` >>> >>> It's a list of functionts, first one initializes a grid, others modify it. >>> Clojures' 'code is data' supposed to make it easy for me to modify that >>> representation by adding an instrucion at the *end* of collection. List is >>> an ordered collection right? Order matters. How do I add an instruction to >>> the end of the list then? >>> Something like this: >>> >>> `(def grid (read-string (slurp "grid.clj"))) >>> (conj grid '(off 1 2 3 6)) ` >>> Yet I can't add to the end of the list, which is a data structure that is >>> evaluatable as code. How is it 'code as data' if I can't add to the end of >>> the ordered collection that is meant for code (as data)? >>> >>> >>> >>> -- >>> You received this message because you are subscribed to the Google >>> Groups "Clojure" group. >>> To post to this group, send email to clo...@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+u...@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+u...@googlegroups.com. >>> To view this discussion on the web visit >>> https://groups.google.com/d/msgid/clojure/efd72013-a85e-46e8-b9db-10dde1a8a235n%40googlegroups.com >>> >>> <https://groups.google.com/d/msgid/clojure/efd72013-a85e-46e8-b9db-10dde1a8a235n%40googlegroups.com?utm_medium=email&utm_source=footer>. > > > -- > 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. > To view this discussion on the web visit > https://groups.google.com/d/msgid/clojure/6cf09a4d-aedd-42e4-860c-35efcb68ed50n%40googlegroups.com > > <https://groups.google.com/d/msgid/clojure/6cf09a4d-aedd-42e4-860c-35efcb68ed50n%40googlegroups.com?utm_medium=email&utm_source=footer>. -- James Reeves booleanknot.com -- 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. To view this discussion on the web visit https://groups.google.com/d/msgid/clojure/0808d1be-b431-4925-80f6-7cf6eb2ad77f%40www.fastmail.com.