Arc Forumnew | comments | leaders | submitlogin
The Aha! programming language (google.com)
2 points by akkartik 4848 days ago | 10 comments


2 points by zck 4847 days ago | link

Weird that they want it to be functional, yet discourage recursion. I wonder if you could write the language without using modification or recursion.

Also, given that functions are first-class, how do they prevent things like the Y combinator? I figured I'd try it out, so I cloned the repository, but it seems to be only usable on the developer's Windows machine. base.res seems to be Windows-only; it has the xml token <assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" processorArchitecture="" publicKeyToken="6595b64144ccf1df" language=""/>. Also, the only file with an extension I've even seen before is ppas.bat, which calls a bunch of executables in C:\lazarus\fpc\bin\i386-win32 .

Has anyone gotten this thing to run? There are no instructions on actually running it. The author seems really concerned with showing people what the language looks like without letting them try it out.

-----

1 point by akkartik 4847 days ago | link

You're way ahead of me :) I found a few features (any and all) interesting, but wasn't actually motivated to try running it.

-----

2 points by zck 4847 days ago | link

I'm motivated like I usually am by things on the internet -- "you're wrong, let me show you how". If functions are first class, then you can't prevent recursion. I think the Y combinator (or the U combinator, maybe?) can make recursion happen quite easily.

-----

1 point by zck 4847 days ago | link

Apparently it's not actually runnable yet: https://groups.google.com/forum/?fromgroups#!topic/aha-progr...

I didn't have the heart to tell him that 1. the language isn't Lisplike, which is a dealbreaker for me, and 2. I don't have room in my life for two languages no one uses.

-----

2 points by akkartik 4847 days ago | link

I think he'll live :)

You might want to ask him, in addition to how he plans to prohibit recursion, why he'd want to do so.

-----

2 points by zck 4844 days ago | link

Having fun talking to him yet?

I don't think he's actually written much in the language (which is somewhat understandable, since the damn thing isn't implemented yet), and that's causing problems because he hasn't realized how annoying simple things like his any statements become.

I haven't asked him this yet -- I'd like him to answer a question I've asked three or four times now first -- but why do some statements run in reverse order? The definition of let and get from http://code.google.com/p/aha-programming-language/wiki/Getti...:

>The statements after the where clauses are evaluated in the reverse order (i.e. from the end)...

This just seems bizarre, confusing, and not at all useful. But we'll see.

-----

2 points by rocketnia 4844 days ago | link

If a where clause's binding expression ran after the body in an eager language, we couldn't use the value during the body. We'd be limited to using it from inside closures (manual laziness).

-----

1 point by akkartik 4843 days ago | link

Any idea why the where bindings themselves would apply bottom to top?

-----

2 points by rocketnia 4843 days ago | link

I do have ideas, but none that make sense. :-p It does seem better to embrace top-to-bottom side effect ordering throughout all syntaxes of the language, with as few discontinuity points as possible.

But if we want to embrace that, it's probably hypocritical if we use prefix syntax for procedure application. ^_-

  ; runs b, then d, then a
  (a (b c) (d e))

-----

1 point by akkartik 4844 days ago | link

Yeah it'll be interesting to see how it goes. I'm actually more favorably disposed after the thread on the list. His motivation is a reasonable one: to make the static shape of code more closely mimic how it looks at runtime. This requires constraints so it feels kinda wild and whacky. But I'm glad somebody's trying these ideas.

Running statements in reverse order isn't such a big deal. Concatenative languages seem backwards, and even preorder is kinda weird at the start.

The best new languages require so much tolerance to the bizarre that it hurts. Alan Perlis said, "A language that doesn't affect the way you think about programming is not worth knowing." I just realized he didn't say, "A good language.." Potential dead ends can be worth knowing as well.

-----