We're not going to add def-. There is regret over even adding defn-, but we don't take things away...
At one point all of the current metadata niceties didn't exist (used to be #^{:private true} some may recall) and defn- seemed worth doing I presume (pre-dates my involvementT). But then that was all simplified down to just ^:private and it's preferred to compose the pieces rather than copy N things. There used to be a slew of these in the old clojure-contrib (https://github.com/clojure/clojure-contrib/blob/master/modules/def/src/main/clojure/clojure/contrib/def.clj - but no def- !). How often do you def things anyway (much less private things)? On Monday, February 26, 2018 at 1:50:40 PM UTC-6, Leon Grapenthin wrote: > > I have written enough Clojure so that I can assure you that every few days > when I type ^:private again I am still annoyed by it. Not every time, but > probably every second or third time. > > Its just in the way of the prototyping typing (micro-)flow. SHIFT-6 you > don't hit so often so you have to hit it right. On german keyboards, by the > way, ^ is a much more annoying character to type. Then a colon, did I miss > the colon? What did I want to do again? > > When prototyping an API ns its important to distinguish what is private > and what isn't. If only I could just write def- without any overhead. > > First world aka best language problems, I know... > > But whats left for an enthusiast except bikeshedding? We both know that a > JIRA discussion on this will not happen due to a lack of importance. And > unless somebody manages to convince Rich, this feature won't happen. > > Fair enough. I'd consider myself a power user since 1.5.1 and value its > conservative governance above every other kind. > The "lets not start postfixing lots of macros with -" argument a good one > in general and probably was a good one at the time. But not in this case > because defn and def are the two most used and most elementary top level > forms. > > This argument didn't convince anyone who has asked me about this. The > counter argument goes "I don't want the - postfix for anything else, just > for def because I use it a lot" -rightfully so. > > The lack of def- is just unnecessary typing overhead in lots of cases. It > could be removed at the cost 5m on a beautiful day. I'd appreciate it :) > > On Monday, February 26, 2018 at 6:52:51 PM UTC+1, Alexander Yakushev wrote: >> >> - Not that often. When I know for certain, I add ^:private. Not like it's >> much more work. If I didn't know ahead of time, I would forget to add the >> private flag in either case. >> - Never. >> - Can't recollect such an event. >> - A few times. As far as I can tell, people appreciate the metadata >> approach since it is unique and powerful. The lack of one particular >> non-critical syntactic sugar is never an issue. >> >> I won't mind having def- as much as I don't mind not having it. Pretty >> much the same as for defn- – Earth wouldn't stop turning if you had to type >> defn ^:private once in a while. >> >> And while I agree with you that it would be somewhat useful, bikeshedding >> only gets you so far. >> >> On Monday, February 26, 2018 at 7:17:05 PM UTC+2, Leon Grapenthin wrote: >>> >>> - How many times do you just write (def ...) instead of (def ^:private >>> ...) because you are not sure whether you need the definition yet, want to >>> save effort, and then you forget to add ^:private later? >>> - How many times have you implemented def- yourself into your project >>> and then used only half of the time because you had to require and :refer >>> the thing from some util namespace which is just as annoying as typing >>> ^:private? >>> - How many times do you use autocomplete on some namespace and find >>> internals because their dev forgot ^:private? >>> - How many times in a year do you have to explain to a Clojure newbie >>> that there is defn- but no def-? >>> >>> IME the statistic strongly supports def- - and I don't see why it would >>> hurt. >>> Having def- in clojure.core will not magically result in having >>> defmacro- and defmulti- and xyz-. Its a false and the only counterargument >>> I have seen. >>> >>> It would be very useful, though. >>> >>> On Monday, February 26, 2018 at 1:44:27 PM UTC+1, Alexander Yakushev >>> wrote: >>>> >>>> Usually, it is better to use metadata rather than create an exponential >>>> explosion of names. Public/private is just one dimension, but you also >>>> have >>>> static/non-static, dynamic/non-dynamic, etc. Then you have functions, >>>> vars, >>>> macros, perhaps modified functions (like schema.core/defn). Cartesian >>>> product of those would be huge. >>>> >>>> defn- is an exclusion from the rule probably because it is used more >>>> often than others. >>>> >>>> On Monday, February 26, 2018 at 10:58:43 AM UTC+2, Promise. wrote: >>>>> >>>>> `defn-` => `defn` >>>>> 'def-` => `def` >>>>> >>>> -- 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.