11 comments

[ 3.4 ms ] story [ 31.6 ms ] thread
Don't be silly. Haskell Curry was a mathematician.

Oh... It seems I got the title wrong ;-)

It seems ironic that in an article on a programming language named after Haskell Curry, it says:

...to take a function of two arguments, say f(.,.), and construct from it a function of a single variable defined by f_x(y) = f(x,y). Computer scientists call such a thing a closure...

I wouldn't consider its use ironic. A curried function is generally implemented using closures (i.e., a function that remembers the lexical environment of its definition). It might be a slight abuse of terminology, but not one that should give much pause.
Has the Prelude been rewritten since?

If not, are there plans to do this soon?

No, the Prelude has not been rewritten and there are no plans to do so. Which axiomatic set should be the basis of a Mathematical Prelude? That's a rather tough question to answer, being that there are many arbitrary but not quite compatible answers. Instead, the focus has shifted to shrinking the Prelude, at least in Haskell':

http://hackage.haskell.org/trac/haskell-prime/wiki/Prelude

I like mathematica for stream-of-consciousness type stuff. Personal notes rather than something I'd publish. I can code up some functions, try a few things, show the important results, and talk about it with typeset equations all in the same printable page. Latex input would be nicer, but it's not terrible once you learn some of the keyboard shortcuts.

Matlab seems an odd thing to ignore. It's pretty good for doing more computationally intensive work. It's not fantastic, but it gets the job done and has good plotting features. I generate a lot of publishable figures with matlab.

I've done some simulations using Fortran, and it's surprisingly good for a language it's age. It's been continually updated. Legacy features occasionally bite you in the ass. C is for drivers. I use it in the lab only when forced to.

So, what does Haskell offer? It looks nicer than C. Can I write drivers for odd-ball devices in it? Probably. Then again, I'm often just modifying some C-code from a vendor, so the choice is already made for me. Fortran is so well entrenched that I'm still going to wind up using it if I ever want to run something through some crazy hydrodynamics code somebody else already wrote. If I want to do stream-of-consciousness type stuff I'll still be using mathematica. How is it at plotting things? Probably not very good since it wasn't worth mentioning.

Sounds like another language I'll learn if I'm forced to.

If you really want to make this physicist drool the single best thing you can do is give me a development environment that combines rich plotting features and Latex input for comments. NOBODY HAS DONE THIS!!! Put a pleasant to use language under the hood and you might have a winner.

It should be fairly easy to write a GVim plugin to do this for any language. Or if you want a full IDE, take an existing Python IDE and add support. Can't beat Python when it comes to balancing practicality and usability - you can call C, C++, and Fortran code from it, and Numpy, Scipy, and Matplotlib make it a joy to use for scientific applications.
Check out org-babel for emacs. That should be what you want.
> So, what does Haskell offer? It looks nicer than C. Can I write drivers for odd-ball devices in it? Probably. Then again, I'm often just modifying some C-code from a vendor, so the choice is already made for me. Fortran is so well entrenched that I'm still going to wind up using it if I ever want to run something through some crazy hydrodynamics code somebody else already wrote.

Actually, the FFI story in Haskell is pretty neat. In the past I've written Haskell plugins which interface to a C api for commercial, closed-source software which isn't a million miles from crazy hydrodynamics code. The idea of walling off statefulness behind a well-defined FFI interface and going to town on the functional side is nice. I certainly found it easier to make progress with GHC than with OCaml.

>(9) Haskell Eats Circular Definitions for Breakfast

It's recursive, not circular, definition. A circular definition never ends while a recursive one does.