Thanks James, will for something like it I think. Still, would be nice if 
code was manipulatable with ease - clojure style. Code-is-data such a 
powerful idea. 

On Sunday, July 18, 2021 at 7:43:20 PM UTC+2 James Reeves wrote:

> "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 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/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/ed22c0d1-cc25-4127-b9ae-2f0733ee874bn%40googlegroups.com.

Reply via email to