This page is not created by, affiliated with, or supported by Slack Technologies, Inc.
2018-06-21
Channels
- # aws (2)
- # aws-lambda (1)
- # beginners (62)
- # cider (31)
- # cljs-dev (16)
- # cljsrn (8)
- # clojure (115)
- # clojure-greece (3)
- # clojure-israel (2)
- # clojure-italy (13)
- # clojure-nl (8)
- # clojure-russia (5)
- # clojure-spec (3)
- # clojure-uk (146)
- # clojurescript (108)
- # clojutre (5)
- # code-reviews (3)
- # cursive (48)
- # datomic (22)
- # editors (20)
- # emacs (7)
- # fulcro (16)
- # graphql (10)
- # mount (2)
- # off-topic (47)
- # onyx (22)
- # re-frame (100)
- # reagent (5)
- # reitit (7)
- # ring-swagger (6)
- # rum (5)
- # shadow-cljs (51)
- # specter (2)
- # tools-deps (95)
- # vim (10)
- # yada (7)
Anybody knows what is the reasoning of using a def
instead of atom
for com.stuartsierra.component
? Am I missing something?
In what context @funyako.funyao156?
@mg Development context, most of the example I see use something like set-init!
which just calls alter-var-root
@mg like this https://github.com/stuartsierra/component.repl/blob/master/src/com/stuartsierra/component/repl.clj
Because atom
is for synchronized mutation and then you need a deref
(or @
) whereas this workflow does not need synchronization because the only change to the value is at startup of your app (and shutdown) -- and you don't need deref
with a simple Var.
You certainly could store it in an atom
and use swap!
to start / stop the component, if you don't mind the additional deref
to access the component.
But the intent implied by atom
vs Var is different.
Does that help @funyako.funyao156?
@seancorfield Thank you for the explanation!
@lockdown- Probably that it combines all the functions steps together without creating intermediate sequence results from each step.
@seancorfield so it's mostly about performance?
@lockdown- I'm not sure I'd it's "mostly" that, but that is certainly a big plus.
The decoupling of the transformations from the input and output types is also important.
For example, I can write a transducer and it can be applied to a collection, to a core.async
channel, to a reducible-query
... and the result can be fed into all sorts of different things.
Ok, gonna read up on them, was going to postpone them but they look like a nice abstraction
Also, they're simpler, in the hickeyian sense :)
@lockdown- To add, I think they have a nice way to do stateful computation
I have just started clojure does anyone uses VScode for clojure. If yes what plugin do you guys suggest me? Main feature i want to have is jumping to the functions definitions, please help.
I have used Clojure plugin by Andrey Lisin, func jump is only working for the inbuild funcs like println
, reduce
the jump is not working for my defined functions, please help
@lepistane I thought Lighttable was abandonware
lighttable was abandoned in favor of eve which hasn't been released and totally won't be abandoned
eve has been abandoned https://groups.google.com/forum/#!topic/eve-talk/YFguOGkNrBo
Hi! I want to create a csv file without saving it on the disk (in order to return it to the client) i have noticed that write-csv can work with a writer instead of a file but i tried it with no success. Tried something like that:
(csv/write-csv (java.io.OutputStreamWriter. ) csv-data)
any suggestions will be appreciated !!Helped me so much!
This is random but does anyone know what is used to make these graphics? http://www.clara-rules.org/img/diagram/RULE.png
it looks similar to what http://bottlecaps.de/rr/ui generates
In Luminus is there any equivalent to like bower or npm deps for third party assets?
Just to be clear (since this is #beginners ) -- there are also plenty of clojurescript libs to pull in by adding them to project.clj
, some of which wrap well-known JS libs. There are also externs/wrappers for a ton of JS libs at https://cljsjs.github.io/ .
In my experience, it's not terribly common for people to need to pull in JS stuff directly by adding the JS file to the project.
Probably not what you were looking for, but just in case...
@matt.raykowski there’s webjars for a lot of that
It works when you have the file in resources/public/...
right?
But you're saying it'll work for ones I have not explicitly downloaded.
So I just need to go RTFM a bit about WebJars.
@matt.raykowski webjars is mechanism where people have packaged certain third party web things as maven artifacts, so you can put them in your project file like everything else. Then you need to add the middleware to serve them
the luminus docs introduce them here http://www.luminusweb.net/docs/assets.html
Okay cool. That's working for CSS.
What if I want to require a JS file in cljs? Is there a good example of that?
in my experience it worked to treat it just as I would css. The starting index page contains a tag that pulls the resource in, and the resource is in the jar via the resources directory so that the server can send it to the client
@noisesmith That approach will not work with CLJS advanced compilation
advanced compilation had nothing to do with requiring the resource, in my experience
we made externs files by hand
perhaps there's a newer easier way to do things, I would be ignorant of it though
from what I've seen, there are packages that give you js plus externs, and attempts to auto-generate externs. I can't vouch for any of them
Just to be clear (since this is #beginners ) -- there are also plenty of clojurescript libs to pull in by adding them to project.clj
, some of which wrap well-known JS libs. There are also externs/wrappers for a ton of JS libs at https://cljsjs.github.io/ .
In my experience, it's not terribly common for people to need to pull in JS stuff directly by adding the JS file to the project.
Probably not what you were looking for, but just in case...
You want a macro that works just like Clojure's built-in "do", as an exercise to understand how to do it? Or if you want something that behaves differently than built-in "do", how do you want its behavior to differ?
I want it to for sure execute sequentially for stateful change that have to happen in order.
Clojure's built-in "do" is sequential