archives

Why can't you push instructions in MSIL/JVML

Doesn't it seem like a good idea to be able to push instructions onto the stack in the MSIL and JVML, and evaluate them later on?

Deliverable code?

I wonder what Ltuer's think about deliverability? What is deliverable code? When I think about dynamic vs. static languages a big difference is the nature of the end product. A scripting language might conclude with a script deliverable, but does anyone want to deliver a script? Dynamic languages are "programmer friendly" but the final compiled deliverable is almost certainly "compromised" (ie slower or less safe). Languages like Java and C# require an intermediate virtual machine. This is only acceptable due the pervasiveness of the environments and probably compromises other languages using the VM. Can we have it both ways? Good deliverable code and a highly productive development environment? For example I have occasionally developed an application in Lisp and then converted it to C, (but not recently). Surely there is a better way?

Aldor going open source

According to the website, Aldor will be open source soon. See also: an old call to open the source, with a link to an online petition, and a recent and as-yet-unanswered query on the Aldor mailing list about the opening of the source.

In a related note, there was a patch to Aldor that I found a few years ago called "Aldor--", but search engines are useless in helping me find this. Does anyone remember this?

Yesno

Yesno: the other side ot the Gödelian coin

Any universally powerful programming language must either offer consistent semantics, or allow the possibility of programs not halting. … Almost all programming languages to date choose consistency. … Yesno is an inconsistent and complete programming language, and that every program returns a value.

Cforall

Cforall is a language design extending ISO C.

Cforall extends the C type-system using overloading, parametric polymorphism, and type generators. … [The] Cforall type system is based on parametric polymorphism, the ability to declare functions with type parameters, rather than an object-oriented type system.

Early Programming Languages (A Logic Puzzle)

Chris Okasaki (of Purely Functional Data Structures fame) gives us Early Programming Languages (A Logic Puzzle)

Try not to use your domain-specific knowledge.

F# 1.9.1 released

F# 1.9.1 has been released with a bunch of new features. LTU readers would probably be interested in the work on unifying object oriented and functional code:

# Active Patterns. Active patterns give a form of extensible pattern matching on abstract values. F# active patterns allow you to pattern match against .NET object values such as XML, System.Type values and LINQ Expression trees. In this redesigned version they become an official part of the language and some novel additions give a lightweight and non-intrusive mechanism to both partial patterns, parameterized patterns and "complete" decompositions (views) of types.

# Implicit Class Construction. This lovely feature makes writing classes considerably more succinct and helps to further bridge the gap between type-inferred functional programming and object-oriented programming.

More info is available at Don Syme's blog here.