POV-Ray : Newsgroups : povray.off-topic : Why is Haskell interesting? : Re: Why is Haskell interesting? Server Time
4 Sep 2024 17:24:07 EDT (-0400)
  Re: Why is Haskell interesting?  
From: Darren New
Date: 27 Feb 2010 17:10:04
Message: <4b89983c$1@news.povray.org>
Orchid XP v8 wrote:
>> Ada. D. Simula.
> I wasn't aware those were *ever* popular.

Ada still goes strong in the areas it is designed for, like safety-critical 
firmware.

>> C#. Visual Basic.
> VB is OO now?

It always was.  Certainly VB.NET is.

>> Hell, even Fortran is OO for the last 10 years.
> People use Fortran? I thought that was only for scientific applications. 

And scientists aren't people?

> Look at job adverts, or websites which talk about programming.

That's not "mainstream", that's "popular". :-)

> If you specifically want a binary tree, the simplest and most logical OO 
> way would be to make leaves and branches different subclasses.

Not especially. What about a branch with only one child node? Is that a leaf 
or a branch? And what's the value in the second branch?

And yes, even if leaves and branches are separate classes, it doesn't mean 
that they both aren't of type "treenode", or the leaf could be a subclass of 
branch or vice versa.

> I meant I've never seen it done like that in an OO language.

You've never seen a N-ary tree in an OO language that used the same class 
for branches and leaves?  Wow.

> My point is that something like a parse tree usually doesn't need to be 
> dynamically extensible. If you make an extension to the language, you 
> typically need to rewrite all the code for processing the parse tree 
> anyway, so the fact that it's monolithic isn't too much of an issue.

I disagree. The whole point of giving you the list of passes was showing you 
how modular each pass can be, as well as showing you how modular each parse 
node type needs to be.

> And you can take a C++ program and use pointer arithmetic to access 
> private member variables. Does that mean C++ doesn't provide encapsulation?

Yes.

>>> What's a closure?
>>
>> It's the value that a lambda expression returns. A "new" statement 
>> returns an instance, a lambda expression returns a closure.
> 
> I still don't really understand.

What is this?

    (lambda (x) (x + 1))

It's a lambda expression.

    y = (lambda (x) (x + 1))

What is y?  It's a closure.

>> window["foo"] = Function(){...}
> OK. So in what way does this mean that "functions are not first-class"?

I didn't say it did. I said that everything in Javascript is an object. 
There are no functions unassociated with a corresponding instance.

OK, you said
 > The difference is that Haskell functions work on data, while Smalltalk 
only has objects. In other words, you can't invoke a function without 
knowing what object that "function" is a method of. (This is also the case 
for Javascript, btw.)

I wasn't sure what "this is also the case for javascript" meant, but I 
thought you meant you can invoke a function without knowing what object it 
is a method of. That isn't true of Javascript, altho there is a top-level 
object that serves as a global namespace.

> As I said, avoiding success so that they don't have to keep things 
> stable actually went out the window some years ago in reality. Most 
> people now *want* Haskell to succeed. (Not that I think it will...)

Fair enough.

> I can imagine there are product written in Java that somebody has to 
> support, or that there are Java compilers that somebody has to support. 
> But the Java language itself?

Well, no, there's nobody who has to support the spec, as such. I meant there 
are major systems where someone is paid to make sure the Java it's based on 
keeps working.

-- 
Darren New, San Diego CA, USA (PST)
   The question in today's corporate environment is not
   so much "what color is your parachute?" as it is
   "what color is your nose?"


Post a reply to this message

Copyright 2003-2023 Persistence of Vision Raytracer Pty. Ltd.