|
|
Chambers wrote:
> I can't say what the slowdown is, or why it's occurring, unless I saw
> your actual Haskell code. Most likely there's a very good reason for
> the performance hit.
"GHC currently does not fuse left folds."
Since my entire program was a simple left fold, that'll be the problem.
(This also explains why the hand-fused version runs much faster -
although I'm still not sure how it manages to be *faster* than C...)
>> The irony, the sheer irony of it, is that the whole reason I was timing
>> this stuff in the first place was that I was just about to reach into
>> the source code of the compiler to try to tweak its performance. It is
>
> Actually, that's a great idea. There's no better way to learn than by
> doing.
Sure. Like anybody is going to accept a compiler modification from a
"troll". Like any of the compiler developers are going to be eager to
help one out. Indeed, the person who yelled at me was the very guy I
wanted to ask for help from; he's the one who reported the issue I was
looking at fixing.
>> obvious to me now that I shouldn't be let anywhere near an actual
>> compiler. Better to leave that to the real experts.
>
> Do you know what an "expert" really is? An "ex" is a has-been, and a
> "spert" is a drip under pressure!
>
> Anyway, how do you think the "experts" got to be that way? By doing
> exactly what you're doing right now!
Well, we're talking about people such as the legendary Simon Peyton
Jones, one of the original PhDs who *invented* Haskell. People who know
what "denotional semantics" actually means, and what "the lambda cube"
is. They didn't get to where they are by blindly poking around somebody
else's source code. They did it by spending decades in research and
development on programming language design, compiler architecturing,
applied mathematics, and things I'd never understand in my wildest dreams.
>> It seems I've been deluding myself. All these years, I thought I was
>> some kind of master programmer.
>
> Well, you might have been deluding yourself in that, yes. But there's
> nothing wrong with aspirations :)
There's nothing wrong with *wanting* to become a master. There's
everything wrong with believing you *are* a master in the complete
absence of any evidence for this.
>> I am now the laughing stock of this forum.
>
> No, you're not. You're our friend and, yes, sometimes we laugh at you -
> but we laugh at pretty much everyone. As Scott Adams says, "Everyone is
> an idiot at something." That means that everyone gets to be laughed at
> :) Take it in stride, and join in the laughter yourself - you might
> find it cathartic.
Well, let me put it this way: Next time I say "Haskell is fast", nobody
is going to believe me for even a split second. So basically what I've
been saying all these years is nonesense.
>> seems everywhere I do, people yell at me for being immature and
>
> They yell at you for being immature? Doesn't that make them... immature?
Well, I say "yell" at me... Of course they put it more professionally
than that. But the gist of it is that they think I'm a troll and they
don't want me around.
> [2]If Haskell can be embedded, I'm thinking it would make a great patch
> for POV-Ray. Something like this:
>
> #declare h_func = haskell { "..." }
>
> #declare val = h_func(1,2,3)
>
> Anywhere POV takes functions, it could use a Haskell function.
I'm not sure that would be such a hot idea.
#declare angleR = angleD / 180 * pi;
#declare angleR = haskell{"fromIntegral angleD / 180 * pi"};
#declare center = <1, 2, 3>;
#declare center = haskell{Vector3 1 2 3};
#declare T1 = texture {pigment {red 1} finish {ambient 0}}
#declare T1 = haskell{default_texture {pigment = PSolid {colour =
ColourRGB 1 0 0}, finish = Finish {ambient = ColourRGB 0 0 0}}};
Not so great, eh?
What you *could* do - and what I attempted to do a while back - is
design a domain-specific language for scene description/construction. It
would be completely incompatible with POV-Ray's current SDL, but it
might be quite nice.
OTOH, if you were going to do that, everybody would want an
object-oritented language rather than a functional one.
Post a reply to this message
|
|