News for hackers. Stuff that matters.
Re:Why I'm Productive in Clojure (2013) by ngrilly on Sunday October 22, 2017 @04:16PM (#15528700)
Are you sure about "you do get compile-time validation like making sure all arguments are passed to a function"?

If I run this:

    (defn bar [x y]
        (println x y))

    (defn foo [v]
        (if v (bar 12 42 79)))

    (foo false)
The program prints nothing and Clojure reports no error.

But when I run this:

    (foo true)
Then Clojure reports an error:

    Exception in thread "main" clojure.lang.ArityException: Wrong number of args (3) passed to: user/bar, compiling:(.../test.clj:6:5)
Re:Why I'm Productive in Clojure (2013) by hellofunk on Sunday October 22, 2017 @05:07PM (#15528938)
I don't spend much time on the JVM, but in ClojureScript, this is what I get for a similar test (including multiple definitions of foo in my case, i've elided the whole source file here):

     (defn foo [a b] :hi)
     (defn bar [] (foo 1 2 3))

     WARNING: Wrong number of args (3) passed to prepost.core/foo at line 25 src/cljs/prepost/core.cljs
     WARNING: foo at line 24 is being replaced at line 48 src/cljs/prepost/core.cljs
It's a compile-time warning even when the app is not running, but ClojureScript goes through a different compilation step than JVM Clojure. Perhaps I was mistaken in the JVM case, or someone else can chime in.
Re:Why I'm Productive in Clojure (2013) by ngrilly on Wednesday October 25, 2017 @05:10AM (#15548584)
Maybe ClojureScript is doing something Clojure doesn't at compilation time…