As a side note to this conversation, I hit this (require) vs (:require)
thing almost a year ago when porting a file to CLJS. ClojureScript has been
enforcing these keyword regulations for some time, as well as only allowing
a single :require, not allowing anything but :require, :use, etc.

On Sat, Aug 20, 2016 at 4:26 PM, <s...@corfield.org> wrote:

> I disagree (strongly) with your position here Brian. I’ll try to explain
> clearly why but first a little background…
>
>
>
> At World Singles, we’ve always done multi-version testing against the
> stable version of Clojure that we plan to use in production and also
> against the very latest master SNAPSHOT. This gives us an early heads up
> when a breaking change is introduced. When the ns spec hit master, our
> build broke. We had three namespaces with incorrect syntax – based on the
> documentation and what all the books and tutorials show – so we simply
> fixed them (one was require, two were import). Luckily none of the
> libraries we rely on had similar breakages.
>
>
>
> Then we moved to Alpha 11 and found another namespace with require –
> clearly our tests don’t have sufficient coverage (duly noted, JIRA issue to
> follow I expect).
>
>
>
> Despite having to fix our code, we welcome the stricter compiler checking
> here. There are very few things in language design that frustrate me more
> than preserving bad compiler behavior in the name of “backward
> compatibility” on the grounds that “if we fix this, people who have code
> that we never intended to work will see breakages, and be forced to correct
> their bad code”. That’s what you’re asking for here: that Clojure/core
> preserve unintended behavior so that people who have code that works
> “accidentally” aren’t forced to modify their code to match what has always
> been intended.
>
>
>
> Why do I feel so strongly about this? A few things… I built one of the
> first ANSI-validated C compilers which focused on “the letter of the law”
> as far as flagging undefined, unspecified, and implementation-defined
> behavior. After that, I was on the ANSI C++ Standards Committee for eight
> years where we had to deal with this same sort of issue over and over again
> in terms of deciding what unintended legacy behaviors should be enshrined
> as standard vs outlawed (vs pushed to one of those three behaviors). After
> all that standards work, I then had to deal with Macromedia / Adobe
> ColdFusion on and off since 2001: a product that values backward
> compatibility so deeply that it repeatedly does exactly what you’re asking
> Clojure/core to do – it won’t fix any number of bugs because they might
> break unintentionally working code. You can’t begin to imagine what decades
> of that position does to a language – it’s a horrible, inconsistent, mess
> of a language, full of special cases, warts, and surprising behavior. I
> wouldn’t wish that on any sane developer.
>
>
>
> Sean Corfield -- (904) 302-SEAN
> An Architect's View -- http://corfield.org
>
>
>
> *From: *Brian Marick <mar...@roundingpegs.com>
> *Sent: *Saturday, August 20, 2016 7:58 AM
> *To: *clojure@googlegroups.com
> *Subject: *Re: Two suggestions re: core.spec, `ns`, and clojure 1.9alpha11
>
>
>
>
>
> On Aug 20, 2016, at 9:03 AM, Alex Miller <a...@puredanger.com> wrote:
>
>
>
> We discussed this before releasing the specs and decided to start on the
> strict side. That said, this is still an alpha and there is plenty of time
> to change our minds prior to official release of 1.9 if that ends up being
> a catastrophic decision.
>
>
>
> I urge you to change your minds. Whose life is harmed, and how, by
> continuing to allow `require` as well as `:require`?
>
>
>
> --
> You received this message because you are subscribed to the Google
> Groups "Clojure" group.
> To post to this group, send email to clojure@googlegroups.com
> Note that posts from new members are moderated - please be patient with
> your first post.
> To unsubscribe from this group, send email to
> clojure+unsubscr...@googlegroups.com
> For more options, visit this group at
> http://groups.google.com/group/clojure?hl=en
> ---
> You received this message because you are subscribed to the Google Groups
> "Clojure" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to clojure+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.
>
>
>
> --
> You received this message because you are subscribed to the Google
> Groups "Clojure" group.
> To post to this group, send email to clojure@googlegroups.com
> Note that posts from new members are moderated - please be patient with
> your first post.
> To unsubscribe from this group, send email to
> clojure+unsubscr...@googlegroups.com
> For more options, visit this group at
> http://groups.google.com/group/clojure?hl=en
> ---
> You received this message because you are subscribed to the Google Groups
> "Clojure" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to clojure+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.
>



-- 
“One of the main causes of the fall of the Roman Empire was that–lacking
zero–they had no way to indicate successful termination of their C
programs.”
(Robert Firth)

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to