Key features of the language include:
I am not sure being .NET compatible qualifies as "easy to use", but the rest sounds interesting. ;^/
Posted to object-functional by Patrick Logan on 2/20/04; 6:32:55 AM
One of our main design concerns was to develop languge with functional capabilites that could be used without much problems by C#/Java programmers.
Most of these didn't have to be objects as the compiler has obviously inferred the right type. I'd say the code generator needs a bit more work.
Dejan
One wonders whether .NET is friendly toward functional programming. I've heard that .NET's object-oriented design emphasis makes FP difficult to support. Comments?
1. If you don't do type inference, a lot of basic types are going to be allocated on the heap.
2. Delegates (function pointers) are slooow. They work through reflection, so no wonder.
3. Tail calls are much slower than regular function calls. See this page for some measurements.
Otherwise, it's pretty easy. You can ignore objects if you want, btw. CLR supports stand-alone functions.
Dejan
Ignoring objects is possible, but probably is not the best thing to do (the library is object oriented). Also stand alone functions are not part of CLS (Common Languge Subset, that most programming languages in .NET know).
As for delegates -- we don't use them for functional values. We use simple interface/object approach something like this: http://lists.ximian.com/archives/public/mono-devel-list/2004-February/004019.html
As for object floating around -- there is lots of boxing. This is not going to change, until after we get code generator to use Generics (parametric polymorphism available in .NET 1.2). Then we should see real speed improvement, as the code is going to be specialized at runtime.
However as far as performance goes -- it's not that bad as it first seems from looking at IL -- decent JITs have most basic optmization already implemented so I doubt there are good reasons to do things like constant propagation etc.
On my box compiler compiles itself (about 600k of code, library etc are in another dll) in about 16 seconds (using mono, athlon 1.8+). This should give some impression of performance.
Well I was about to put this post on the home page but suddenly realized the relationship I had missed. Gont and Nemerle have the same developer. Gont is dead, long live Nemerle. The background information might be useful for those interested in Nemerle. Thank you for keeping it online.
Gont is a programming language, that consists of largely imperative composition of C-like lexical layer, control structures and speed with ML's typesystem, functions as first class citizens, and safety. Plus possibly few more things, like objects.
Hmm...a curious mixture then. Michal Moskal is the proprietor. There is a Freshmeat site for Gont.
Discovered via the GCC Front Ends page.