Live data from Hacker News

Clojure 1.11 is now available

clojure.org

71–74 of 74 posts

Re: Clojure 1.11 is now available

#71
post #61

Earlier quoted context omitted.

> show me an example of how having 'spec' is going to help me refactor the code that I got wrong the first time, as easily as what a proto-ML-like static type checker does. It's not a question of "types are bad vs types are good thing". It's a question of "this property was called 'name', but now I need it to be 'names', and I really need to know every possible place of my code base that uses it so that I can recursi…

Refactoring is still hard and awfully manual. And like all dynamic languages, a wrong key (was it :user or :users or :username or :user_name?) will be a PITA to find.

Refactoring from a :user/name String to a :user/names Array is going to be manual in both static and dynamic languages until Github Copilot gets a lot better. All the compiler or Spec can do is show you the places in your code where you'll need to make updates.

Re: Clojure 1.11 is now available

#72

Earlier quoted context omitted.

It needs to run natively and not on the JVM. Performance is bad compared to Rust and even Go. Erlang is better when it comes to parallelism.

Seems like a weird nitpick, given that Clojure is a parasitic language by design. In addition to the JVM it also runs on GraalVM, Node, BEAM and .NET.

"Runs", on paper. BEAM and .NET are more of the same and not at all practical and GraalVM not what I mean by native. Also, clojurescript is not clojure.

Re: Clojure 1.11 is now available

#73

Every person I know that has developed in Clojure has high praise for it. How does it compares to the likes of other statically typed Lisp dialects such as Rackett? I've always wanted to read "Clojure for the brave and true" but there's just enough lisp books (my favorite being "Structure and Interpretation of Computer Programs") I can read without actually wanting to use the language.

I think a lot of people that come from clojure arrive at consensus that you can instrument some typechecking on edges. Define what is valid(input) data and move it through your program. Inside your program it rarely matters(from validity perspective) if something is a list, tuple, lazylist - it is a collection. Things are either single value, collection or associative the semantics around each in code are pretty obvious in most cases.

Its always contentious topic, there are no answers.

Re: Clojure 1.11 is now available

#74
post #61

Earlier quoted context omitted.

Refactoring is still hard and awfully manual. And like all dynamic languages, a wrong key (was it :user or :users or :username or :user_name?) will be a PITA to find.

Refactoring from a :user/name String to a :user/names Array is going to be manual in both static and dynamic languages until Github Copilot gets a lot better. All the compiler or Spec can do is show you the places in your code where you'll need to make updates.

More precisely, it can show you "all" the places where I have to rework. And, since it is very likely that other pieces of the software will need to be change, it's crucial that is does it recursively.

The compiler can do that ; I'm not aware of how spec could do that.

Framing it as "all the compiler can do" us a bit weird - that's _exactly_ the thing I need.

Post reply on HN