This page is not created by, affiliated with, or supported by Slack Technologies, Inc.
2021-04-24
Channels
- # announcements (4)
- # babashka (75)
- # beginners (57)
- # calva (26)
- # cider (1)
- # clj-kondo (18)
- # cljs-dev (2)
- # clojure (31)
- # clojure-czech (1)
- # clojure-europe (23)
- # clojure-france (3)
- # clojure-germany (2)
- # clojure-uk (3)
- # clojurescript (23)
- # conjure (9)
- # data-oriented-programming (5)
- # datomic (14)
- # defnpodcast (1)
- # deps-new (12)
- # expound (4)
- # fulcro (32)
- # helix (4)
- # jackdaw (70)
- # joker (1)
- # malli (1)
- # music (2)
- # off-topic (19)
- # other-languages (6)
- # podcasts-discuss (5)
- # portal (6)
- # quil (5)
- # re-frame (16)
- # shadow-cljs (14)
- # spacemacs (7)
- # vim (5)
- # xtdb (22)
if-some
looks neat. https://clojuredocs.org/clojure.core/if-some when would one use it instead of if-let
?
@sova if-let
treats both false
and nil
as negative conditions. if-some
only treats nil
as a negative condition.
So if you have an expression that can yield truthy, false
, or nil
, where the first two are useful values and the third means “no result”, then you want if-some
rather than if-let
:
dev=> (if-let [x false] x :nope)
:nope
dev=> (if-some [x false] x :nope)
false
Is there a way to list all namespaces in the REPL when using ClojureScript? The equivalent of all-ns in Clojure
There's https://github.com/clojure/clojurescript/blob/5091bab07e8e60f64d06e43bf07ba08204071b0d/src/main/clojure/cljs/analyzer/api.cljc#L212, but that is only useful if you need that information in Clojure (and maybe self-hosted ClojureScript -- not sure). What are you trying to do?
Is there a cleaner and/or more idiomatic way to say this?
(filter #(and (= (:k1 %) (:k1 a-map))
(= (:k2 %) (:k2 a-map))
...
(= (:kn %) (:kn a-map))) coll-of-maps)
edit: generalized the example a bit for n keysBut yeah, select-keys
is probably the right answer here, unless you specifically want a set as a result.
Hi I am working on https://github.com/metabase/metabase project, It is a leiningen project and I am trying to using debugger on it after running project with `lein run` I installed calva on vscode and tried some steps to set up debugger, but I was out of luck I would be grateful if you tell me steps required to set up debugger 🙏
You will probably have better luck getting an answer over at #calva. Make sure you describe what being "out of luck" means specifically. Also, check out https://calva.io/debugger/.
I am using vscode+calva. So far no issues having fun hacking clojure, except for one really annoying thing. clj-kondo is drawing sqiggly lines across many useful macros and makes the entire code ugly. I tried configuring it but failed. I created a .clj-kondo folder in project root and added config.edn. The below is my simple attempt to exclude deftest
{:linters
{:unresolved-symbol
{:exclude [clojure.test/deftest]}}}
@code.komali You should not have to do that, clj-kondo is aware of all built-in clojure macros. It's likely that something else is wrong.
Please lint your code on the command line with the clj-kondo
command line tool to see if you get any unexpected errors.
If not, then it's a downstream tooling problem. Pasting a screenshot might also help. Come talk in #clj-kondo or #calva to discuss further problems.
I'm pretty sure i also get squiggle on deftest with cava. I assumed it just wasn't supported. Will check when i get home.
Thanks @borkdude I'll try doing that. But, even if the command line linting worked. I am very happy with calva. Hope the calva creator(s) do something about this.
Of course. This is just a way of finding out where the problem is. It should be resolved.
@borkdude yes. thanks for helping out!
My ns is like this:
(ns asm.parser-test
(:require [clojure.test :refer :all]
[asm.parser :refer :all]))
oh yeah! If I change it to
(:require [clojure.test :refer [deftest testing is]])
It removes the wiggles, thanks!@code.komali @qmstuart well, shouldn't use is maybe too strong, but it helps clj-kondo more if you don't do that. However, if you have populated the cache with
mkdir -p .clj-kondo
clj-kondo --lint src:test --dependencies
then it will also work (I just realized this answering a similar question in #clj-kondo)but since Calva uses LSP under the hood I would have expected it to have populated the cache, but maybe it doesn't do that if there is no .clj-kondo
dir? /cc @ericdallo
Good question, clojure-lsp doesn't handle any cache folder, it just pass the cache true flag for clj-kondo, I imagine clj-kondo don't create the .clj-kondo folder always?
This can explain issues with non analyzed definitions like refer all for deftest and so on
Do you think it makes sense clojure-lsp creates that dir? (It seems odd the need to create another lib folder though)
Well, clojure-lsp has more an idea of what the project is than clj-kondo, I always left this up to the user. But I think if clojure-lsp knows what the root is, then it makes sense that it creates the .clj-kondo
folder if it doesn't exist
Could someone take a look at my sample repo and tell me why the GraalVM compiled binary won't work? https://github.com/naxels/parse-rss-example
And i created a new project using leiningen, copy/paste the code and it won't work there either with the native-image plugin
It's been frustrating me for 2 days straight ha, i can run it, debug it, CALVA it, uberjar it
I found where the issue is: as soon as I place the code to do xml/parse outside the globals and inside a function, it fails after compiling
@patrick.glind I suggest not using any tools other than uberjar + $GRAALVM_HOME/bin/native-image
since it's pretty difficult to know what goes wrong where, if you use all kinds of "helper" tools.
Check out the hello world examples here to get going with a simple example and then extend it to your example:
https://github.com/lread/clj-graal-docs
If you need to parse some XML you can also use #babashka which comes with clojure.data.xml
built in