Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

As one not knowledgeable about Clojure, and to play devil's advocate: one of the handy parts about `//` is that you can violate the language rules. E.g. I've fairly often had cases where I want to temporarily remove a check, to see if something behaves as I expect:

  //if (some logic) {
    do something
  //} else {
  //  something else
  //}
Or in other cases collapse two if/else blocks together, or stuff like that. It's not as common as commenting out a logical unit, definitely, but it's far from uncommon.

How would you achieve that in Clojure? Seems like you'd need to copy/paste, like this?

  #_(if (cond) thing other_thing)
  thing


Clojure has line comments as well.


Ah, derp, that'd just be the `;` then? So you could do this?

  ;(if (cond)
    thing
  ;  other)
If yes: great! The best of both worlds.


Yes, you could. Also, most lisp/clojure editing modes will have commands for manipulating S-expressions, such as slurp and barf, which make it a single shortcut to move `thing` out of the `if` expression in your example.


have done this lots of times.

    (if (test) (then) (else))
    (if true #_(test) (then) (else))
    (if false #_(test) (then) (else))
makes it quite simple to leave the tests in. Also, quite easy to raise forms (structurally raise) and reevaluate the form and then undo but not reevaluate the form to have it modified.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: