Hack on the Delve core, with Delve and Haskell

Delve is a new programming language intended to bring the benefits of static type checking and functional programming to object-oriented design and development. It is an impure, eager language (Yes I can hear the groans of woe and cries for sanity already!) Currently Delve supports: Higher-order functions/first class functions Anonymous functions Lexical closures First class continuations Tail-call optimization A meta-object model (classes are objects) S-Expression based syntax. Embedded Haskell expressions within Delve. What it doesn't have: Lots and lots! Basically what I have is an de-sugared, untyped core language. An analogy could be made with Haskell core files. I'm going to be working on the type system for next little while (I have a stack of paper and a pen right here!). Once that is implemented we'll see where to go. Please see the TUTORIAL file included in the source for a brief outlook on Delve's syntax, semantics and planned type system. However! If you're looking for a new project, and especially if you are an undergraduate, then I think Delve would be a good choice for these reasons: It's written in a hybrid of Haskell and itself. It's currently undergoing active development (by me and some pals). You're not going to be lonely! It's quite powerful already, without too many lines of code (it's now just about 5.5KLOC - it's no goliath! ) It's a programming language: name a compiler which isn't a cool piece of tech! Ok, maybe you can but still, it's a chance to work on something non-trivial and interesting. Quite honestly, I'm a bit of a fool - I am a math undergrad! So don't you feel foolish about getting involved if you're not a professorial chap! If you feel like it, get involved in the design, and push me the patches :) It does require lots of love though! It was all hacked out rather quickly :) Executables which Delve provides: edc -- The Elgin Delve Compiler The Elgin Delve Compiler currently supports two backends - the first to a bytecode format for execution on edvm, and the second is to a Haskell source code representation of Delve bytecode. This allows Haskell to be embedded within Delve, for the express purpose of extending and building edvm. edc is written in Haskell (GHC). edvm -- The Elgin Delve Virtual Machine The Elgin Delve Virtual Machine executes Delve bytecode files (.dcode format). Since part of the VM is actually driven by Delve bytecode, edvm can be considered a hybrid of Delve and Haskell (again GHC). Delve continues the grand tradition of naming compilers after Scottish Cities (no, Elgin does not have a university). Delve is released under the terms of the GNU GPLv3. For more information on Delve, check my blog at http://killersmurf.blogspot.com/ and the Delve repository at http://github.com/elginer/Delve/ -- John

On Tue, Aug 11, 2009 at 6:57 AM, spoon
Delve is a new programming language intended to bring the benefits of static type checking and functional programming to object-oriented design and development. It is an impure, eager language (Yes I can hear the groans of woe and cries for sanity already!)
Nice. Sounds like a fun project. If I had more spare cycles I would try to help.
Currently Delve supports:
Higher-order functions/first class functions Anonymous functions Lexical closures First class continuations Tail-call optimization A meta-object model (classes are objects) S-Expression based syntax. Embedded Haskell expressions within Delve.
Could you create a comparison of Delve to other (potentially) similar languages? For example, how is Delve similar/dissimilar to Clojure and Scala?
Delve is released under the terms of the GNU GPLv3.
Note intended as a criticism of the GPL or your decision to use it, but does this impact people's ability to use the Delve standard libraries in their own non-GPL projects? Good luck! Jason

Could you create a comparison of Delve to other (potentially) similar languages? For example, how is Delve similar/dissimilar to Clojure and Scala?
I don't have any experience with Clojure at all, but looking at the page, it would appear that Clojure does not support first-class continuations, while Delve does. Delve is closer to scheme in this respect. Delve differs from Scala in that Delve is a much more imperative language. Classes are not static - they are created at run-time. In this way, Delve is akin to a well-typed ruby. Delve aims to support the open classes and objects of Smalltalk and Ruby. Since it is typed, breaking the encapsulation of an object could be tracked by the type system - I'd venture to say would be useful for a situation like a classbox, which modifies classes after they are defined.
Delve is released under the terms of the GNU GPLv3.
Note intended as a criticism of the GPL or your decision to use it, but does this impact people's ability to use the Delve standard libraries in their own non-GPL projects?
Don't worry! The GPL will be used to protect only the source of the virtual machine and the compiler - since Delve bytecode is just input for the VM, it doesn't constitute a modification of the software so it can be proprietary. In the same way, it's still GPL to allow proprietary extensions to be linked into the VM or compiler through specific interfaces. - John
participants (2)
-
Jason Dagit
-
spoon