beginners 2025-07-15

Been looking into keywords and saw that Namespaced keywords are written as :foo/bar but not as foo/:bar , this seems more consistent with how symbols are also ns-prefixed. Is there any lore behind this design choice?

πŸ‘ 2
βž• 1
Alex Miller (Clojure team) 2025-07-15T04:12:54.632099Z

well it's certainly better from a parsing perspective

πŸ‘ 2

maybe to encourage a syntactic perspective, as opposed to object-oriented. The namespace is a property of the keyword: not the other way around

πŸ€” 1

Here's one way to think of it, if it helps: β€’ A symbol is a pair of strings, where the first one is called "namespace" and the second one is called "name". The common representation of a symbol is /, but in the special (and relatively common) case where the namespace part is empty, the slash is omitted: . β€’ A keyword is structurally the same as a symbol, but its written representation is :. It follows that if the keyword has a namespace part, its representation is :/.

πŸ‘ 1

Hello, I am having issues with cider-jack-in: "...error in process sentinel: Could not start nREPL server: ' "Java" ' is not recognized as an internal or external command, operable program or batch file."

Sounds like you're on Windows? Do you have a JDK installed? In a Windows terminal, what does java -version say?

Thank you for responding. Windows 11, jdk-24, java version "24.0.1", emacs 30.1, doom v3.0.0

Okay, so it sounds like the PATH Emacs is using to start the process isn't the same as what is used in the terminal. I no longer use Emacs so I don't remember the fix for that. You can ask in #doom-emacs or #emacs -- I'm sure it's just some var you need to set in elisp...

Thanks again. Cheers.

You can check with getenv β€œPATH” if it picks up the Java correctly I think

Or better set up JAVA_HOME env var correctly

you can change exec-path in Emacs, like :

(setq exec-path (append exec-path '("/jdk/bin")))
or also set env vars like :
(setenv "PATH" (concat (getenv "PATH") ":/jdk/bin"))