call clojure from java
Hi do you know how I can call a clojure script from a java method ? Thanks, Sorin. -- 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/groups/opt_out.
Re: call clojure from java
Hi guys, Thanks for your information. I would take the advantage of concurrency in clojure and implement a concurrent scenario in clojure and call it from java code. For example I want to read/modify the content of file from many threads, this scenario I want to implement in clojure, and call this from java, in order to avoid the implementation of this scenario in java to put locks on file when it's modify by one thread. Sorin On Tuesday, February 18, 2014 3:10:18 PM UTC+2, Stathis Sideris wrote: > > I think you're looking for this method here: > > > https://skillsmatter.com/skillscasts/3864-impromptu-rich-hickey-lightning-talk > > (you need to register to see the video) > > On Tuesday, 18 February 2014 11:39:20 UTC, sorin cristea wrote: >> >> Hi >> >> do you know how I can call a clojure script from a java method ? >> >> >> Thanks, >> Sorin. >> > -- 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/groups/opt_out.
Lazy sequence - how they work internally
Hi, maybe this question was already put it here, but can someone explain how exactly work internal a function wrapped with lazy-seq keyword. For example in the below code sample: ( defn test-fc "sum of all collection elements using recursion and laziness" [coll] (letfn [(sum-fc [sum coll] (if (empty? coll) (cons sum nil) (lazy-seq(sum-fc (+ sum (first coll)) (rest coll ) ] (sum-fc 0 coll) ) ) if I test the function: (test-fc (range 5)) I got the right result, if I continue to test with bigger number I don't got StackoverflowException, but if run (test-fc (range 210432423543654675765876879)) I didn't get StackoverflowEx but the application didn't return any result, because take to much time to compute this ? How exactly work this internally and how is removed recursion( inside call sum-fc with new parameters) from the flow in this case ? From what I saw in java code of LazySeq class and clojure source code, it's made a list with LazySeq object and in my opinion in that list the LazySeq object contain enough information to compute the requested item and in this way is removed recursion and implicit StackoverflowException issue, if I understand something wrong please explain to me. I test this function from IntellijIDEA + LaClojure plugin. Thanks Sorin. -- 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.
Re: Lazy sequence - how they work internally
Hi Ginaluca, I have a question ; why when a run/execute command/code line (test-fc (range 210432423543654675765876879)) it's not executed the function test-fc and return the sum for all 210432423543654675765876879 elements? why should I put the test-fc reference to a variable, x, like you present below. In this case (def x (test-fc (range 210432423543654675765876879)) I see here a problem, I keep a reference to the head of sequence and this will imply that the GC will can't garbage the unused items, if is wrong what I'm say please correct me. thanks a lot Sorin. On Monday, April 7, 2014 1:45:41 AM UTC+3, gianluca torta wrote: > > Hi sorin, > > your function computes a sequence of just one element (the sum of the > collection members), so I would say it is not a typical use of (lazy) seqs > > to see that the code is indeed lazy, you can try: > (def x (test-fc (range 210432423543654675765876879))) > and see that it returns immediately; however, as soon as you evaluate x: > x > the whole computation of the only element of x starts and continues all > the way to process the 210432423543654675765876879 elements of the range > > As for your question on recursion: this is an example of tail recursion, > that is automatically converted into plain iteration. > When there is only a recursive call, and such a call is the last thing in > the body of the function, it can be easily (and automatically) converted to > iteration, with no stack overflow problems. > > hope this helps > Gianluca > > > > On Sunday, April 6, 2014 6:56:00 PM UTC+2, sorin cristea wrote: >> >> >> Hi, >> >> maybe this question was already put it here, but can someone explain how >> exactly work internal a function wrapped with lazy-seq keyword. For example >> in the below code sample: >> >> ( >> defn test-fc >> "sum of all collection elements using recursion and laziness" >> [coll] >> (letfn [(sum-fc [sum coll] >> (if (empty? coll) >> (cons sum nil) >> (lazy-seq(sum-fc (+ sum (first coll)) (rest coll >> >> ) >> ] >> (sum-fc 0 coll) >> ) >> ) >> >> if I test the function: (test-fc (range 5)) I got the right result, if I >> continue to test with bigger number I don't got StackoverflowException, but >> if run (test-fc (range 210432423543654675765876879)) I didn't get >> StackoverflowEx but the application didn't return any result, because take >> to much time to compute this ? >> >> How exactly work this internally and how is removed recursion( inside >> call sum-fc with new parameters) from the flow in this case ? From what I >> saw in java code of LazySeq class and clojure source code, it's made a list >> with LazySeq object and in my opinion in that list the LazySeq object >> contain enough information to compute the requested item and in this way is >> removed recursion and implicit StackoverflowException issue, if I >> understand something wrong please explain to me. >> I test this function from IntellijIDEA + LaClojure plugin. >> >> Thanks >> Sorin. >> > -- 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.
Re: Lazy sequence - how they work internally
Hi Gianluca, I have a question ; why when a run/execute command/code line (test-fc (range 210432423543654675765876879)) it's not executed the function test-fc and return the sum for all 210432423543654675765876879 elements? why should I put the test-fc reference to a variable, x, like you present below. ( this is related to your phrase - "your function computes a sequence of just one element (the sum of the collection members" - why ?) In this case (def x (test-fc (range 210432423543654675765876879)) I see here a problem, I keep a reference to the head of sequence and this will imply that the GC will can't garbage the unused items, if is wrong what I'm say please correct me. thanks a lot Sorin. -- 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.
Re: Lazy sequence - how they work internally
Hi James, I'm new to clojure and maybe for this reason it's possible to put some 'stupid' questions, I came for Java so for me it's normal when I call a fc/method to execute the body of that fc/method and return a result; this is the reason for why I expect a result when I call (test-fc (range 210432423543654675765876879)), I'm totally agree with you that this will take a long time to complete. I try to understand exactly how work internally lazy seq and for that I start to wrote this function to know how recursive call of function from inside of his body is replaced with plain recursion and in this way is avoided Stackoverflow ex.. It's something wrong on my logic ? Thanks Sorin On Monday, April 7, 2014 11:13:51 PM UTC+3, James Reeves wrote: > > Why do you expect (test-fc (range 210432423543654675765876879)) to return > a result? > > Even if each iteration of the loop takes only 1 nanosecond, your function > would take 6 billion years to complete. > > - James > > > On 7 April 2014 21:01, sorin cristea >wrote: > >> >> Hi Gianluca, >> >> I have a question ; why when a run/execute command/code line (test-fc >> (range 210432423543654675765876879)) it's not executed the function >> test-fc and return the sum for all 210432423543654675765876879 elements? >> why should I put the test-fc reference to a variable, x, like you present >> below. ( this is related to your phrase - "your function computes a >> sequence of just one element (the sum of the collection members" - why ?) >> >> >> In this case (def x (test-fc (range 210432423543654675765876879)) I see >> here a problem, I keep a reference to the head of sequence and this will >> imply that the GC will can't garbage the unused items, if is wrong what I'm >> say please correct me. >> >> thanks a lot >> Sorin. >> >> -- >> 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 . >> For more options, visit https://groups.google.com/d/optout. >> > > -- 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.
Re: Lazy sequence - how they work internally
Hi Webb, What exactly you mean by '*The point was you aren't using lazy-seq as intended here since you are always creating a singleton sequence*' ? In my sum function: ( defn test-fc "sum of all collection elements using recursion and laziness" [coll] (letfn [(sum-fc [sum coll] (if (empty? coll) (cons sum nil) (lazy-seq(sum-fc (+ sum (first coll)) (rest coll ) ] (sum-fc 0 coll) ) ) I intend to compute sum of '*210432423543654675765876879*' elements of a collection, by calling (test-fc (range 210432423543654675765876879)), if I Do this *(def x **(test-fc (range 210432423543654675765876879)))*, and then *x,*this is not the same thing with *(test-fc (range 210432423543654675765876879))* ?, I understand the issue related to time to compute this sum, but the same time is taken when I call x, right ? Thanks for the hint with trampoline function, really interested . Sorin. -- 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.
how to add a function to a collection ?
Hi all, do you know how is possible to add a function result, that is another function, to a collection, a list for example: (defn *f1* [msg] (*fn[msg](println (str "hello " msg))*)) (def collection '()) (cons (f1) collection) in this situation f1 must be of type ISeq to can be added to 'collection'. Do you know how is this possible because if I call (cons (seq (f1)) collection) it doesn't work. Thanks, Sorin -- 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.
Re: how to add a function to a collection ?
I see, this is the problem even if I call correct the function, sorry for that missing function parameter, when it will try to add the result of 'f1 "xxx" to 'collection' it will try to transform the result, fn..., to an type ISeq, this is what collection support, and there appear the problem *(defn f1 [msg] (fn[msg](println (str "hello " msg(def collection '())(cons collection (seq (f1 "xxx")))* 'IllegalArgumentException Don't know how to create ISeq from: ro.srncristea.blogspot.clojure.concurrency$f1$fn__2158 clojure.lang.RT.seqFrom (RT.java:505)' thanks, sorin. On Thursday, May 22, 2014 3:04:39 PM UTC+3, Di Xu wrote: > > (defn *f1* [msg] (*fn[msg](println (str "hello " msg))*)) >> (def collection '()) >> (cons (f1) collection) >> > > change (cons (f1) collection) into (cons (f1 "xxx") collection) > -- 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.
how to define a variable of type collection to keep other functions.
Hi all, do you have any idea how I can define a variable, global or inside a function, used to store for example the FutureTask objects resulted from ExecutorService submit(fn) call,I want to put all futures in a collection and later call 'get' on each of them. bellow is a sample of that code: (defn sample-fc [] (def futures '()) (dotimes [i 3] (def f (. thread-pool (submit (fn [] ("task result !!!") (cons f futures) ) "shutdown the pool" (. thread-pool shutdown) (. thread-pool awaitTermination (. Long MAX_VALUE) (. TimeUnit SECONDS)) "go through all futures an call get on them" (doseq [f futures] (println (. f get)) ) ) when I do 'dosync' futures collection is empty, even if (def f (. thread-pool (submit (fn [] ("task result !!!") is a a non empty object of type FutureTask(java.util.concurrent package). Do you know how to define 'futures' variable such that to keep all returned future ? thanks, Sorin -- 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.
Re: how to define a variable of type collection to keep other functions.
Thank Philippe for your advices,I came from java environment and seems I still remain with some 'bad' habits. On Friday, May 23, 2014 12:04:52 PM UTC+3, Philippe Guillebert wrote: > > Hello > > This is not written as functional code. You have to understand that : > > (cons f futures) > > creates a new "version" of futures with f in front of it and cons *returns > it to you*. Put another way,* futures is not modified by cons*. In your > dotimes construct, the consed value is lost each loop. Have a look at > loop/recur, map, and reduce, these are the backbone functions when > programming in clojure. > > Also, do not use (def) inside a function, this is ugly. use let to define > local bindings instead. > > -- > Philippe. > > > > > On Fri, May 23, 2014 at 10:16 AM, sorin cristea > > > wrote: > >> >> Hi all, >> >> do you have any idea how I can define a variable, global or inside a >> function, used to store for example the FutureTask objects resulted from >> ExecutorService submit(fn) call,I want to put all futures in a collection >> and later call 'get' on each of them. bellow is a sample of that code: >> >> (defn sample-fc >> [] >> (def futures '()) >> (dotimes [i 3] >> (def f (. thread-pool (submit (fn [] ("task result !!!") >> (cons f futures) >> ) >>"shutdown the pool" >> (. thread-pool shutdown) >> (. thread-pool awaitTermination (. Long MAX_VALUE) (. TimeUnit SECONDS)) >> >> "go through all futures an call get on them" >> (doseq [f futures] >> (println (. f get)) >> ) >> ) >> >> when I do 'dosync' futures collection is empty, even if (def f (. >> thread-pool (submit (fn [] ("task result !!!") is a a non empty >> object of type FutureTask(java.util.concurrent package). >> >> Do you know how to define 'futures' variable such that to keep all >> returned future ? >> >> thanks, >> Sorin >> >> -- >> 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 . >> For more options, visit https://groups.google.com/d/optout. >> > > > > -- > Philippe > -- 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.
Re: how to define a variable of type collection to keep other functions.
Thanks Sean, indeed this help me a lot .. one question, beside that it's not indicated to define def inside of a defn, as you pointed before, if I have the bellow code: *( defn some-method[arg] (def thred (. Thread currentThred) (println "on current thread" thread "use variable" arg))* 'thred' - is only visible inside of some-methd, because is a little confuse for me your statement - "*`def` and `defn` create global bindings - they are not variable assignments - and you don't want `def` nested into `defn`.* " do you know why is more advantages to use *let *instead of *def *inside a *defn *? thanks Sorin On Saturday, May 24, 2014 2:04:55 AM UTC+3, Sean Corfield wrote: > > On May 23, 2014, at 2:19 AM, sorin cristea > > wrote: > > Thank Philippe for your advices,I came from java environment and seems I > still remain with some 'bad' habits. > > Coming from Java, the main thing to bear in mind in Clojure is that you do > not have "variables" in the sense you are used to and you generally avoid > "loops" in favor of operations on whole collections (such as map/reduce). > > `def` and `defn` create global bindings - they are not variable > assignments - and you don't want `def` nested into `defn`. > > You can use `let` to create local bindings (again, not variables). > > Clojure has `future` built-in so you might consider something like this: > > (defn sample-fc > [] > (let [futures (repeatedly 3 (fn [] (future "task result !!!")))] > (doseq [f futures] > (println (deref f) > > Or just: > > (defn sample-fc > [] > (doseq [f (repeatedly 3 (fn [] (future "task result !!!")))] > (println @f))) ;; @f is short for (deref f) > > `repeatedly` takes a count and a no-arg function and return a sequence of > results of calling that function. > > Or if you want to see the results differ: > > (defn sample-fc > [] > (doseq [f (for [i (range 3)] (future (str "task result " i "!!!")))] > (println @f))) > > But all of these are still procedural in that they loop over the data and > print results, rather than constructing data structures and transforming > them (and ultimately printing the result). > > Consider: > > (defn make-tasks > [inputs] > (for [i inputs] > (future (str "task result " i "!!!" > > (defn join-tasks > [tasks] > (clojure.string/join "\n" (map deref tasks))) > > (println (join-tasks (make-tasks (range 3 > > Here we've separated out task creation (based on a sequence of inputs), > task completion (gathering the results as a single string), and printing > the result. Note that `map` is lazy so the actual task completion - deref - > is forced by joining the results together since that is an eager operation. > > At this point you could also do: > > (-> (range 3) > make-tasks > join-tasks > println) > > which makes the "pipeline" sequence of steps more obvious. > > Since we've broken things down into small steps - and I mentioned `map` > being lazy - it's instructive to see what happens if we don't "force" the > mapped sequence to be used: > > (do (map deref (make-tasks (range 3))) (println "DONE")) > > This will just print DONE (and nil, the result of calling `println`) but > the tasks will not even be created because nothing uses them. You can prove > this to your self by adding a `println` inside the `future` call like this: > > (future (do (println "RUNNING " i) (str "task result " i "!!!"))) > > There are several ways to "force" the mapped sequence to be used > (realized). You could wrap it in a call to `doall`: > > (do (doall (map deref (make-tasks (range 3 (println "DONE")) > > This realizes the mapped sequence (but still throws away the result). You > could use `dorun`: > > (do (dorun (map deref (make-tasks (range 3 (println "DONE")) > > This realizes the mapped sequence and returns nil (which is then thrown > away). Or you could use `mapv` which produces a vector and is not lazy: > > (do (mapv deref (make-tasks (range 3))) (println "DONE")) > > Or you could simply loop over the tasks, calling deref and throwing the > result away via `doseq` (which is why this is kind of procedural): > > (doseq [f (make-tasks (range 3))] > (deref f)) > > `doseq` returns nil. > > Which you choose depends on what, if anything, you want to do with th
PersisTVector & PersistHashMap - internal implementation.
Hi all, I don't know if this question was already asked by someone here but can you tell me(explain) or guide me to a properly documentation about how is internal implemented PersistenVector and PersistentHashMap , how they behave to an insert , remove, update; this question is came from presentation of Rich Hickey - Persistent Data Structures and Managed References(http://www.infoq.com/presentations/Value-Identity-State-Rich-Hickey). Thanks in advance, Sorin -- 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.
PersistentVector & PersistentHashMap - internal implementation
Hi all, I don't know if this question was already asked by someone here but can you tell me(explain) or guide me to a properly documentation about how is internal implemented PersistenVector and PersistentHashMap , how they behave to an insert , remove, update; this question is came from presentation of Rich Hickey - Persistent Data Structures and Managed References( http://www.infoq.com/presentations/Value-Identity-State-Rich-Hickey). Thanks in advance, Sorin -- 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.
Re: PersistentVector & PersistentHashMap - internal implementation
On Tuesday, June 3, 2014 5:07:30 PM UTC+3, Stefan Kamphausen wrote: > > Hi, > > On Tuesday, June 3, 2014 4:02:45 PM UTC+2, sorin cristea wrote: >> >> Hi all, >> >>I don't know if this question was already asked by someone here but >> can you tell me(explain) or guide me to a properly documentation about how >> is internal implemented PersistenVector and PersistentHashMap , how they >> behave to an insert , remove, update; this question is came from >> presentation of Rich Hickey - >> Persistent Data Structures and Managed References( >> http://www.infoq.com/presentations/Value-Identity-State-Rich-Hickey). >> >> >> > The posts by Karl Krukow describe this very well. See > http://blog.higher-order.net/2009/02/01/understanding-clojures-persistentvector-implementation.html > > and the linked post on hash maps. Code links are outdated, though. > > > Best, > stefan > Hi, thanks for this resource, I take a look through the description on PersistentHashMap, but was not so clear how exactly is searched for a element on level three for example ? -- 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.
store a value in a PersistentVector and PersistentHashMap
Hi all, do you know how is store a 'value' in a PersistentVector or in a PersistentHashMap ? Thanks Sorin. -- 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.
Re: store a value in a PersistentVector and PersistentHashMap
On Wednesday, June 4, 2014 4:32:00 PM UTC+3, François Rey wrote: > > On 04/06/14 14:59, sorin cristea wrote: > > do you know how is store a 'value' in a PersistentVector or in a > > PersistentHashMap ? > Hi Sorin, > Your question is difficult to understand without more context. > Are you trying to use Clojure data structures from Java? > http://www.lispcast.com/3-things-java-can-steal-from-clojure > Are you trying to understand how to use clojure data structures? > http://pleac.sourceforge.net/pleac_clojure/arrays.html > http://pleac.sourceforge.net/pleac_clojure/hashes.html > Are you trying to understand how clojure data structure work internally? > http://hypirion.com/musings/understanding-persistent-vector-pt-1 > http://hypirion.com/musings/understanding-persistent-vector-pt-2 > http://hypirion.com/musings/understanding-persistent-vector-pt-3 > Hi Francois, I'm trying to understand how clojure persistence data structure, specially PersistentVector and PersistentHashMap, work internally Thanks. -- 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.
macro - unquote
hi all, related to macro definition, what are the differences between*[** ' ]* char and *[ ` ]* char ? thanks. -- 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.
Re: macro - unquote
http://blog.8thlight.com/colin-jones/2012/05/22/quoting-without-confusion.html On Thursday, June 19, 2014 12:22:36 PM UTC+3, sorin cristea wrote: > > > > hi all, > related to macro definition, what are the differences between*[** ' ]* > char and *[ ` ]* char ? > > thanks. > -- 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.
import functions from different .clj files
Hi all, I have file fileB.clj (ns a.b.c) (defn inc-sample [no] (+ no 1)) and file fileA.clj (ns a.b.c.d (:require [a.b.c.fileB :as fB])) (defn method-a [] (println "number incremented" (fB/inc-sample 2)) ) in fileA.clj I'm not able to see the functions from fileB.clj even I use :require to import namespace of fileB. Can tell me anyone what is wrong or how to do to see the functions from fileB.clj in fileA.clj ? thanks. sorin. -- 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.
Re: import functions from different .clj files
I want to do something like when you import a file from a clojure package, for example the case of jdbc, you wrote* (:require [clojure.java.jdbc :as sql])* than you call functions from clojure jdbc with statement (sql/fc-name..) but seams that this not working in case you have two .clj files or I do something wrong. On Saturday, July 12, 2014 7:15:56 PM UTC+3, Mike Fikes wrote: > > And alternatively you could declare the first namespace as being > a.b.c.fileB -- 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.