I had an enjoyable time prototyping optimization heuristics in OCaml, where Arc would have been completely inadequate because it lacks floating point speed.
It's more that "latent" typing (types do not appear in source code) and "structural" typing (types are determined by their structures, not by their names) are very important. Haskell and Ocaml fit both criteria, despite being strongly statically typed.
The reason for both is that you don't know the data types you'll be using when you start programming. It's very common to switch from a string to a hash to a structured record to an ADT, and if you have to change type declarations in every place that datum is passed to, you'll be spending most of your time changing type declarations.
Have a look at http://shootout.alioth.debian.org/gp4/benchmark.php?test=all... - instead of twiddling your thumbs for 20 seconds the way I did, you go and get a cup of coffee or check email/blogs or something else that takes your mind off the task at hand.
The reason I mention this niche (where C libraries you could call do you little or no good) is because things like optimization heuristics and machine learning are the most common form of exploratory computing and programming I know of. The biggest symptom of this is that there are dozens of "machine learning" toolkits, environments, libraries, etc all intended to provide a situation that frees you from worrying about extraneous details (like how to get data out of crappy HTML in order to do some kind of data analysis project), but a lot of people just code everything from scratch in vanilla Java/C/Python/whatever.
The way I write programs, generally, is I do the simplest possible test that still embodies the essential idea behind what I want to do and grow it from there. Thus a language supporting that has to be flexible, and I don't see why dynamic typing is necessary or sufficient for that.
The type system has little or nothing to do with also supporting essential features that support the way I think: closures, combinators, metaprogramming, and other things that often make life a lot easier.
Comments
Why is dynamic typing important?
I had an enjoyable time prototyping optimization heuristics in OCaml, where Arc would have been completely inadequate because it lacks floating point speed.
It's more that "latent" typing (types do not appear in source code) and "structural" typing (types are determined by their structures, not by their names) are very important. Haskell and Ocaml fit both criteria, despite being strongly statically typed.
The reason for both is that you don't know the data types you'll be using when you start programming. It's very common to switch from a string to a hash to a structured record to an ADT, and if you have to change type declarations in every place that datum is passed to, you'll be spending most of your time changing type declarations.
it lacks floating point speed
How much slower are floating point operation in Arc than OCaml?
Have a look at http://shootout.alioth.debian.org/gp4/benchmark.php?test=all... - instead of twiddling your thumbs for 20 seconds the way I did, you go and get a cup of coffee or check email/blogs or something else that takes your mind off the task at hand.
The reason I mention this niche (where C libraries you could call do you little or no good) is because things like optimization heuristics and machine learning are the most common form of exploratory computing and programming I know of. The biggest symptom of this is that there are dozens of "machine learning" toolkits, environments, libraries, etc all intended to provide a situation that frees you from worrying about extraneous details (like how to get data out of crappy HTML in order to do some kind of data analysis project), but a lot of people just code everything from scratch in vanilla Java/C/Python/whatever.
The way I write programs, generally, is I do the simplest possible test that still embodies the essential idea behind what I want to do and grow it from there. Thus a language supporting that has to be flexible, and I don't see why dynamic typing is necessary or sufficient for that.
The type system has little or nothing to do with also supporting essential features that support the way I think: closures, combinators, metaprogramming, and other things that often make life a lot easier.
http://shootout.alioth.debian.org/gp4sandbox/benchmark.php?t...
Arc has a lot of bottlenecks when speed matters, but I never felt floats were one of them...