Google Closure is too Java. It's not idiomatic JavaScript.
Then, there's the elephant in the room, and that elephant is Jquery.
Then, the Google Closure compiler is a moot point. Everyone by now
already has a copy of jquery from the Google CDN and linking to it in
your code will not download it any further after your first visit to a
website that does so. In any case, it's already small and fast.
Then there's rhino/jvm. I would much rather an in-browser focus.
I'm tempted to "fork" clojurescript and redo it in javascript perhaps
so that seamless interop with jquery would be the main priority.
* I respect your opinions. I am glad that you have taken the time to
start exploring ClojureScript
Second:
* Dude, stop trolling. This is the second time you have started a thread
with a baiting subject line and no clear end goal. Your opinions are
yours, and I have no problems with that, however, this offers no
constructive feedback. If you would like to write your own Clojure on
JavaScript, that would be a great way to learn and get exactly what you
want out of it. I encourage you to look at the ClojureScript source
code for ideas while you are doing your implementation.
* If you want to start discussions like this, please do so elsewhere.
If you have something in particular you want to discuss about Clojure or
ClojureScript, then this is the place.
Cheers,
Aaron Bedra
--
Clojure/core
http://clojure.com
On 07/24/2011 08:19 AM, James Keats wrote:
> Alright, to be honest, I'm disappointed.
>
> First of all, congrats and good job to all involved in putting it out.
> On the plus side, it's a good way to use the Google Closure javascript
> platform.
>
> On the minus, imho, that's what's wrong with it.
>
> Google Closure is too Java. It's not idiomatic JavaScript. I find it
> disappointing that rather than porting from a functional language like
> Clojure straight to another functional language like Javascript, the
> google closure with its ugly Java-isms is right there obnoxiously in
> the middle.
>
> Then, there's the elephant in the room, and that elephant is Jquery. I
> believe any targetting-javascript tool that misses out on jquery-first-
> and-foremost is missing out on the realities of javascript in 2011.
> Jquery is huge in its community and plugins, and it has tons of books
> and tutorials. In much the same way that you can have lots of libs on
> the JVM, there are lots of plugins for jquery. So much so that the
> latest edition of Javascript: the Definitive Guide includes a chapter
> on it; quoted:
>
> "Because the jQuery library has become so widely used, web developers
> should be fa-
> miliar with it: even if you don�t use it in your own code, you are
> likely to encounter it
> in code written by others."
>
> Then, the Google Closure compiler is a moot point. Everyone by now
> already has a copy of jquery from the Google CDN and linking to it in
> your code will not download it any further after your first visit to a
> website that does so. In any case, it's already small and fast.
>
> Then there's rhino/jvm. I would much rather an in-browser focus.
>
> I'm tempted to "fork" clojurescript and redo it in javascript perhaps
> so that seamless interop with jquery would be the main priority.
>
> Discuss?
>
>
--
Cheers,
Aaron Bedra
--
Clojure/core
http://clojure.com
--
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clo...@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+u...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
Sorry for the digression, but what about YUI 3?
Regards,
BG
---
Sent from phone. Please excuse brevity.
I think the Clojure community can do much, much better. In fact a clientside framework could be the first Clojure killer app ...
On Jul 24, 2011, at 1:15 PM, Frank Gerhardt <f...@gerhardtinformatics.com> wrote:
...
The Javascript notaries have advocated using a small functional subset
of javascript, rather than the full gamut of javscript's quirks, and I
was saddened while watching the Rich Hickey talk when he said that
clojurescript would abstract away the complex conventions and
discipline required when writing apps for gClosure by producing code
ready for its optimizing compiler, when it could've simply enforced
that small functional subset of javascript itself (sans gClosure)
that's now considered idiomatic best practice.
>> Restricting yourself to a functional subset of JavaScript can't fix
>> JavaScript. The functional subset stinks, Javascript notaries be damned.
>
> If so where does this leave clojure itself and its advocacy of
> functional programming, then; see last paragraph of my reply to Mark.
You can't draw any inference along those lines from David's observation. The functional parts of Javascript are far different from those of Clojure (and not in a good way).
> On Jul 24, 7:24 pm, Michael Gardner <gardne...@gmail.com> wrote:
>> The functional parts of Javascript are far different from those of Clojure (and not in a good way).
>
> How so? javasript, while not as functional as clojure, is far more
> functional than java ( first class functions, closures, anonymous
> functions etc.
Javascript is simply painful to use functionally. The verbosity of anonymous functions, the lack of crucial HOFs like map/filter/reduce, the lack of functional data structures, the lack of macros (not strictly a "functional" feature, but especially useful with functional code)... You can fix these to varying degrees with libraries; but in any case the overall superiority of Clojure syntax and data structures must be obvious to anyone interested in ClojureScript, since those are the sole advantages it provides over Javascript.
> A small subset of clojure would mirror and could expand
> on a small subset of javascript); it's been called a "Lisp in C's
> Clothing", and Brendan Eich famously and repeatedly said "As I’ve
> often said, and as others at Netscape can confirm, I was recruited to
> Netscape with the promise of “doing Scheme” in the browser" Back at
> Netscape "doing a scheme in the browser" was botched a bit by a deal
> with Sun and "the diktat from upper engineering management was that
> the language must “look like Java”."[1], and whereas clojure/
> clojurescript now had an opportunity to correct that, instead it's
> piling on the Java-ism with gClosure.
Why should we care what kind of Javascript ClojureScript generates, as long as it's correct and performant? The whole point of the project is to allow us to write Clojure rather than Javascript!
Given that JS is merely the "assembler" that ClojureScript targets -
in exactly the same way that Java bytecode is the "assembler" that
Clojure targets on the JVM (and presumably CLR bytecode for that VM) -
I don't see why you're concerned about the Closure library here.
Clojure developers are used to working with nice, clean functional
wrappers around Java libraries so why should ClojureScript be any
different? Closure is an implementation detail.
(and, yes, you do seem to be trolling... again)
--
Sean A Corfield -- (904) 302-SEAN
An Architect's View -- http://corfield.org/
World Singles, LLC. -- http://worldsingles.com/
Railo Technologies, Inc. -- http://www.getrailo.com/
"Perfection is the enemy of the good."
-- Gustave Flaubert, French realist novelist (1821-1880)
Could you please tweet that, if only so I can retweet it? :)
--
Charlie Griefer
http://charlie.griefer.com/
I have failed as much as I have succeeded. But I love my life. I love
my wife. And I wish you my kind of success.
+1 to all of that.
--
Protege: What is this seething mass of parentheses?!
Master: Your father's Lisp REPL. This is the language of a true
hacker. Not as clumsy or random as C++; a language for a more
civilized age.
Be that as it may, it has been my experience that throwing the term
"troll" around itself is inflammatory and generates more heat than
light. It's easily abused to dismiss without consideration (and to try
to get others to do likewise) an argument you disagree with, for
example, as well as frequently misapplied by accident. (It should be
properly reserved for those who quite intentionally are posting solely
to stir up noise -- not just anyone whose posts have that effect even
unintentionally, let alone where the main stirring up of noise is
coming from the use of the word "troll" itself or from other
name-calling directed AT the alleged troll.)
The best thing to do if you suspect some post may be a troll is to
*ignore it*. Flaming it and/or calling its author names will, if
you're wrong, alienate what might be a useful contributor to the
group, and if you're right, feed the troll. I doubt you wish to do
either.
> As for responding with "OK, this guy clearly doesn't get it - how can we
> improve our communication", this goes back to the intent of the author. I
> don't think the intent was to "get" anything, I think the intent was to
> incite.
The evidence is, thus far, equivocal on that score.
> The best response to this is to ignore it, and that is what I
> should have done, but it is easier to say than to do.
Ahh. That's one that is beginning to get it more, anyway.
It is interesting to me that you say this, because it's an argument
I've used against other JavaScript libraries. In particular I think
Zimbra is weak in this way. For a specific example, to register an
event handler using the Zimbra event system, you can't just pass in a
function, you have to pass in an instance of an AjxListener. This
definitely strikes me as a useless Java-ism.
The G. Closure library doesn't have that particular problem -- it's
clearly aware that functions are first-class objects in JavaScript and
takes advantage of that fact. Is there some other specific way in
which the G. Closure library is too Java-like? How does that specific
way actual harm the development process or the final product?
> Then, there's the elephant in the room, and that elephant is Jquery.
I like jQuery. It's a huge win compared to vanilla JavaScript for the
browser. Now, I personally plan to write my ClojureScript code to
target the G. Closure library and then run it through the
advanced-mode G. Closure compiler, but there's no reason *you* have
to. You argue elsewhere that the G. Closure compiler is unnecessary
(citing streaming HD video in comparison to minified JavaScript) -- if
you don't use the compiler (or use it only in simple mode) you should
have no problem using jQuery. Your resulting .js will be quite a bit
larger because you'll have a couple of the G. Closure library files
that ClojureScript itself uses, but nothing compared to streaming HD
video.
So, you could use ClojureScript and jQuery to write a snappy little
demo and prove to everyone the value of that approach. I'm sure I'm
not the only one that would be interested in seeing such a demo.
--Chouser
I think Rich's point in his talk is good to re-iterate here. Is jQuery
cool? Yes! I would hate to program a webapp in JS without it...but
that's the key, "in JS". Why do I need jQuery 90% of the time, because
simplifies things like finding dom elements, and adding events, etc.
For JS coding, that's a awesome tool to have. But in ClojureScript we
have map, filter, macros, etc. Why would I need jQuery? I think it's
important to distinguish between libraries that are truly needed to do
web programming, and libraries that are needed in JS to do web
programming.
Timothy
Almost every big JS library I know of adds in traditional inheritance,
so I don't think the community has decided what the best design
pattern is. There are many vocal people in the community who advocate
for prototypal inheritance, but I think this is a far cry from
consensus.
But the real issue is that this has very little to do with
ClojureScript. Whether the underlying library uses one or the other is
of little concern to the higher level. I don't think there is anything
in ClojureScript preventing you from interop with *any* JS lib, unless
of course you also want to use Closure compiler, in which case there
are some rules to follow.
> I respectfully dispute that; for what they both do - dom, css, ajax,
> events, cookies, ui, effects, animations etc - jquery does it far
> better and is much more pleasant an api. What jquery itself doesn't do
> the huge ecosphere of libs around it do, for example:
> http://metajack.im/2009/03/13/jquery-and-strophe-made-for-each-other/
> http://strophe.im/
I wrote that post and the Strophe.js library. I can tell you there is
nothing at all in Strophe that is jQuery dependent. It turns out that
jQuery's selector engine is quite useful at picking apart XML (and
strangely the other libraries selector engines aren't), which makes
using Strophe.js a lot easier. Plenty of people use Strophe.js
alongside other JS libs without any problems.
Many libraries are like this. Underscore.js is another example, but
there are tons of others.
It's certainly true that jQuery has a lot of plugins that already
exist. I can't say yet whether any of those would be useful in
ClojureScript. There's nothing preventing you using jQuery and
ClojureScript together (aside from a few kB overhead which they claim
to be working on minimizing). I don't see what benefit ClojureScript
would get from being built on jQuery, and it would be giving up a lot
(the Closure compiler!) for any such benefits.
Strophe is actually a great example because it's nearly impossible to
write any javascript library that satisfies some consensus of
javascript design. What dependency management tool should it use? What
type of object structure? No matter what I choose, there are large
swaths of major libraries that will not have made the same choices.
ClojureScript doesn't seemed particularly tied to anything but the
Closure compiler and it's dependency requirements. The benefits are
huge, and don't exist anywhere else to my knowledge. If jQuery or YUI
offered such a system, I think there would be more to argue about, but
even though I'm not a fan of Closure or YUI either (I tend to reach
for jQuery), I am perfectly happy with ClojureScript's choices and
have started down the road to embracing Closure library as well.
jack.
Not everyone *has* a blog, you know.
> Ken was helpful to me then when he pointed out that my post was simply
> too long.
More in a "condense your thoughts, or post several posts on subtopics"
sense than a "post somewhere else" sense, though.
> Furthermore, if people want to offer etiquette pointers on the tone
> and framing of a particular post, why not simply use the "reply to
> author" link? There's a quote from the New Testament that I can't
> quite remember....wait.....thank you Google: "If thy brother shall
> trespass against thee, go and tell him his fault between thee and him
> alone."
Unfortunately, some people on the internet seem to think that a) the
way to punish misdemeanors is public humiliation of some sort, b) they
are the police and judge and jury who will decide who's guilty and
apply these punishments, and c) what things are *misdemeanors* and
what things *they, personally, dislike* are precisely equal as sets.
Of course, all three things are wrong. :)
Those people cause as much trouble as trolls -- perhaps more, since
they're among the most incorrigible troll *feeders*.
[snippy]
nchurch, I arrest you, try you, and find you guilty of the heinous
charge of top-posting, thou knave, thou scum, thou waster of
bandwidth! ;)
For penance you must make 3 more useful posts here today, and solve 3
Project Euler problems by midnight. ;)
In place of an etiquette document I suggest the book
called "Producing Open Source Software".
In this generally useful book there is some advice,
mostly directed at project leads but this section is relevant:
http://producingoss.com/en/producingoss.html#communications
I don't think the original poster intended to troll but the
post certainly fell under the rubric of "kibitzing" (def:
"A Kibitzer is a non-participant who hangs around offering
(often unwanted) advice or commentary"). The advice was
"unwanted" as the issue was already addressed in the video.
Based on the book, I think Rich is doing an
excellent job, especially in the area of communication.
Tim Daly
--
I wish I had a plug I could pull to stop this thread right n
LOL
But I think you need to understand what exactly it is that you are
asking of Rich and the other ClojureScript devs whith your original
comment. Rich's comment is not abnormal for the type of request you
are making. I have seen his type of reply before.
For a second let's try to cool down and see the logic process used in
Clojure to start with. Standard Clojure was developed on the JVM...for
one reason...it provides a platform to stand on while developing a new
language. We already have a type system, GC, etc. Could Rich have
developed all this from scratch? Sure, but we'd probably still be at
Clojure 0.1, and no one would be using the language in production.
Believe me, I've actually attempted writing Clojure in a lower level
language (both PyPy and C++), and it's not pretty, the level of tools
that exist for the JVM and the level of the JVMs themselves shaved
years of development time off the creation of Clojure.
What does this have to do with ClojureScript? Well I think it shows
the thought process that Rich uses when developing a new language. He
looks at his tools and finds platforms that make is life easier.
So, let's for the sake of argument, enumerate the features of both
sides of this question:
jQuery:
Understood by the JS community
Helps manipulate the DOM
Provides some UI routines
Optimizes code size via minifiers
Closure:
Enforces a strict OOP model
Provides Graphics routines (canvas)
Provides DOM manipulation routines
Provides many UI routines
Provides encryption, networking, spellchecking, math libraries etc.
Has a full optimizing compiler
The cons of Closure is of course that it's not well understood by the
JS community. But this really isn't a language for the JS community,
so is that really a problem?
I think Rich looked at both these options (and many more), and simply
picked the right tool for the job at hand. No! I would never use
Closure for a website I was writing in JS. It would be a major pain in
the neck. But I plan on using Clojure and ClojureScript for my future
web needs.
Just like you can write Clojure code and not care what Java is doing
under the hood. Now you can write Clojure for the browser and not care
about what JS is doing.
______________
So after taking that all into consideration, I'm confident, that if
you took the time to develop a POC that showed that a jQuery based
ClojureScript would be faster, smaller, and better than one developed
with Clojure, Rich would probably switch in a heartbeat. But until you
have hard evidence, it's really hard to convince anyone.
Timothy
Sent via Mobile
Sent from my iPad
It may be helpful to approach the issue with the premise that
ClojureScript != Clojure. They share a lot of syntax and semantics,
and a developer experienced in one can easily transfer his/her working
knowledge to the other. But in the end, I perceive them as two
different languages that just happen to have a lot in common.
> Enter ClojureScript, for the most part you will be able to reuse server code on the
> front end, but some of those libraries you've become accustomed to using just
> won't work, and if you're working to a deadline and suddenly hit that - you're
> going to become frustrated beyond all hell ;-)
Personally, I wouldn't assume that anything works on ClojureScript
unless explicitly tested and labeled as such.
This seems like an interesting avenue to follow. This thread is
already past its expiry date, though, so I doubt further discussion
will get much attention here.
Javascript is simply painful to use functionally. The verbosity of anonymous functions, the lack of crucial HOFs like map/filter/reduce, the lack of functional data structures, the lack of macros (not strictly a "functional" feature, but especially useful with functional code)... You can fix these to varying degrees with libraries; but in any case the overall superiority of Clojure syntax and data structures must be obvious to anyone interested in ClojureScript, since those are the sole advantages it provides over Javascript.
Javascript is simply painful to use functionally. The verbosity of anonymous functions, the lack of crucial HOFs like map/filter/reduce, the lack of functional data structures, the lack of macros (not strictly a "functional" feature, but especially useful with functional code)... You can fix these to varying degrees with libraries; but in any case the overall superiority of Clojure syntax and data structures must be obvious to anyone interested in ClojureScript, since those are the sole advantages it provides over Javascript.The verbosity of anonymous function (and much more) is fixed by CoffeeScript and Coco[1] and the lack of crucial HOFs is fixed by underscore.js
I like CoffeeScript. But CoffeeScript is largely syntactic sugar. Hardly anything in the way of new semantics. And it encourages traditional stateful OOP and classical inheritance.Underscore.js does what it can, but it's goals are largely trumped by CoffeeScript.David
jQuery is not so much an elephant as it is a mammoth. It was one of
the first clientside-JS frameworks to reach a broad audience, but it
also one of the worst. It incorporates so many terrible JS practices,
performs miserably, and really can make anyone dislike JS. People have
mentioned other clientside frameworks. Let me mention also Ext JS,
which I believe knocks the socks off the rest. It is crafted with a
real appreciation of JS, and that love may rub off you a little as you
work with it.
Try to see the situation from the lead developer perspective
(e.g. Rich's perspective). I have been through the "head-punching",
as you call it and I don't want to put words in Rich's mouth but
I do see things differently.
To lead a project you need to make design choices.
To make those design choices you have to take a lot of factors
into account.
Those factors are optimized based on a lot of considerations,
most of which are stated in the project goal or justification.
As you say, "people who do not agree with the choices appear".
When they do, they generally advocate a particular position that
is in conflict with the project goals or justification. Or they
advocate for a new direction that gets rejected.
These "advocates" are of two varieties. Either they are casual
contributors (posters to the mailing list) or developers who have
invested a lot of time and effort going against the goals.
The "posters" who disagree tend to choose particular topics that
they find familiar (e.g. autoconf, eclipse, emacs, maven, etc.).
These lead to mini-flame wars (head-punching, bike-shedding).
The developers who disagree tend to choose particular topics that
they have invested time and effort to develop code. These lead to
forks.
In either case, as the lead developer, you constantly have to
justify your choices. The design space has a lot of freedom so
you have to make choices based on your best judgement. Not everyone
will agree, as you can see. This causes a great deal of stress
on the lead developer, which you DON'T see. Defending every choice
from every poster and developer takes a lot of time and effort.
What is particularly frustrating is the people who ignore your
effort to communicate. If you justify using Google Closure (as
Rich has), if you justify leaving out eval (as Rich has), if you
justify changing certain language features (as Rich has), then
it seems reasonable to expect that people pay attention to the
goals and choices. It is very tiring to keep repeating "the choice
has already been made", especially when code is being written to
support that choice.
As you say, "the language matters to them". Of course it does.
It also matters to Rich. The reason it "matters" is that Rich
is doing an excellent job navigating the design space based on
his considerable experience. He is solving deep problems, like
the expression problem, in novel and creative ways. He is making
tradeoffs based on a lot of factors (unlike the posters) which
take into account project goals such as important performance
questions.
Posting emails about "who's unhappy with ..." is not constructive
criticism. And when it ignores already stated goals or justifications
it can only result in anger. As a Common Lisper, I see that Rich is
dancing all over my religious beliefs, but that seems to be my
problem, not his. If it makes me unhappy that's also my problem.
Being unhappy with design choices is NOT Rich's problem. So why
would I use Rich's mailing list to complain?
While it is fine to say "get involved in head-punching" I think
it is important to realize that it is Rich's head being punched.
Tim Daly
I would add that I want to see Rich maintain is grip on the Clojure wheel for a very long time.
Consensual decisions are most of the time not the best. They are the result
of compromises not based on technical arguments but on people's feelings or political issues.
I would rather rely on someone who has invested a significant time in evaluating
several options after collecting the maximum input than on loose canons coming up with ideas
that do not fit well with Clojure.
Another thing that Rich does very well is to postponed decisions because he feels
he did not find the good solution yet and needs to think again about it.
How many of us in our professional life can demonstrate such independence ?
How many told their boss "I am not ready yet to take a decision on this matter" ?
We have a leader here that has a very good track record decision wise + an astounding achievements.
Stop hammering on him and if you are not happy with Clojure, find another language
that matches your aspirations. They are plenty out there.
Luc P.
daly <da...@axiom-developer.org> wrote:
--
Luc P.
================
The rabid Muppet
And the result of them tends most often to be something like Java at
best, and often closer to C++.
> Stop hammering on him and if you are not happy with Clojure, find another language
> that matches your aspirations. They are plenty out there.
There is something of an issue here, though: where, exactly, should
the line be drawn between "thou shalt not question this on the mailing
list!" and "fair game for discussion", presuming as you do that it
isn't "everything is fair game for discussion if it's not entirely
unrelated to Clojure". You seem to feel that major, already-made
design decisions that would require a fork and massive effort to do
differently lie on the "shalt not question" side. What about more
minor choices -- for example, which of the three kinds of primitive
math overflow behaviors, throwing, auto-promoting, or wrap-around,
should be the default? I assume not-yet-made choices and
easily-tweaked, recentish (still in alpha or beta) things that won't
break a lot of existing code fall under "fair game".
Also, what should the policy be for responding if someone questions a
"shalt not question" anyway? Currently, there's an unfortunate
tendency to assume the worst motives and to employ namecalling,
particularly the word "troll", against possibly-well-intentioned
transgressors. I'd suggest that such threads should get a single
response, saying "that decision's already been made; if you want to
make your own fork that does it differently go ahead, and if you want
to discuss it there's the clojure-misc google group, but please don't
clutter *this* group with it", and otherwise the post should be
ignored. Followups by the OP should be ignored. Oh, and there should
probably be a pointer to a FAQ of some sort in that initial response
answering any likely "but why?" type questions the OP might have,
including "what other topics will bring this kind of response?".
There is something of an issue here, though: where, exactly, should
the line be drawn between "thou shalt not question this on the mailing
list!" and "fair game for discussion"
You seem to feel that major, already-made
design decisions that would require a fork and massive effort to do
differently lie on the "shalt not question" side. What about more
minor choices -- for example, which of the three kinds of primitive
math overflow behaviors, throwing, auto-promoting, or wrap-around,
should be the default?
I'd say there's also
(3) Covering old ground you didn't know had been discussed before.
Though you might lump that into 1; but there's a difference between
"not up to speed and should know it" and "not up to speed with no way
of knowing it". (3) is most likely coming from a newbie. Another
source of (3) would be if the previous discussions all took place
elsewhere, such as IRC or the dev list, that the user hasn't been
monitoring.
>> You seem to feel that major, already-made
>> design decisions that would require a fork and massive effort to do
>> differently lie on the "shalt not question" side. What about more
>> minor choices -- for example, which of the three kinds of primitive
>> math overflow behaviors, throwing, auto-promoting, or wrap-around,
>> should be the default?
>
> Ken, you are beating a dead horse on 1.3 numerics.
No, I was just bringing it up as an example to illustrate something
else. But now that you bring it up ...
> In particular: (1) You think that the overflow defaulting choice is minor,
> and I think it is fundamental.
Actually, what I think is that the default (once you have a BigInt
that is about as fast as a boxed Long when the numbers are small)
should be to use BigInt except when primitives are specified, and to
use checked primitive math then, with unchecked as an option. This
would be most compatible with 1.2's numerics behavior, and still
provide all 3 options for arithmetic handling.
(I also have concerns about the *unchecked-math* flag I heard about
somewhere. We can't have +, etc. testing some flag at runtime -- much
less fetching a dynamic Var, which is a slow, slow ThreadLocal object
at the JVM level -- before each add without losing performance badly.
We really need an (unchecked-math (the-math-goes-here)) macro, or
something, that affects what functions get used at *compile time*
rather than a dynamic Var flag that is set before performing what you
hope to be really fast math.)
> (2) You were unaware of the platform issues
> in Java that drove us to implement our own BigInt.
That arose in connection with a problem with format, not a gripe with
arithmetic.
> That said, Ken's questions on numerics are not unwelcome. It is not
> realistic for every comer to the mailing list to have encyclopedic knowledge
> about what has gone before.
That would be my category (3) above. :)
> So nobody should bite anyone's head off for
> asking a question that has been answered before (particularly if e.g. it is
> hiding in a deep, convoluted thread and isn't search friendly).
Which, unfortunately, is exactly what happened to me with the numerics
thing a while back. :P
(I also have concerns about the *unchecked-math* flag I heard about
somewhere. We can't have +, etc. testing some flag at runtime -- much
less fetching a dynamic Var, which is a slow, slow ThreadLocal object
at the JVM level -- before each add without losing performance badly.
We really need an (unchecked-math (the-math-goes-here)) macro, or
something, that affects what functions get used at *compile time*
rather than a dynamic Var flag that is set before performing what you
hope to be really fast math.)