

Converge (Python-like language with macro-like facilities) 1.0 released - ltratt
http://convergepl.org/

======
marvin
When you're implementing macros anyway, why not go all-out and just embrace
LISP? You've got to make a pretty convincing argument to make me agree that
whatever language implementing macros is better than LISP. From what I gather,
the main issue that makes people not want to use a LISP dialect is library
support, and no new language is going to have that.

~~~
ltratt
It's not an issue of libraries - you're clearly right that new languages are
likely to have less impressive libraries.

It's partly a matter of syntax - frankly, I can't deal with Lisp's syntactic
minimalism (my problem, maybe, but there's a lot of other people like me). So
there's an immediate argument for adding at least Lisp-like macros to a
syntactically rich language (a task which, historically, has proved very
difficult).

It's also, as suggested by henning, because there is more to meta-programming
than just Lisp-esque macros.

------
cstejerean
Does Python-like simply means uses python indentation? I was expecting
something closer to Python. So it's not quite Python (easy to read, executable
pseudocode) and it's not quite Lisp (real macros).

~~~
apgwoz
Well, they use ':' and indenting for defining blocks, but they also seem to
have taken the 'nonlocal' keyword from Python 3000.

Also, I haven't looked too deeply into it, but my assumption is that classes
in Converge are implemented similarly to Python.

They've borrowed a bunch of ideas it seems, but aside from multi-line lambdas
and the "macro" facility, they seem to have changed syntax for the worse. ':='
for assignment, using what have become standard bitwise operators for logical
or and logical and--those types of things turn me off right away.

~~~
ltratt
Interestingly, nonlocal was part of Converge before it was proposed for Python
3000 (see
[http://tratt.net/laurie/tech_articles/articles/designing_san...](http://tratt.net/laurie/tech_articles/articles/designing_sane_scoping_rules)).

It doesn't seem sensible to me to imply that every programming language has to
have the same syntax as what came before it: no syntax is perfect and future
generations won't thank us if we don't improve things when we can. Using "="
confuses new-comers to programming who think it's some form of comparison
thingy. Converge doesn't have logical "or" and "and", so the & and | operators
(taken syntactically and semantically) are there to point that out (although,
in general, they operate in analogous fashion to "and" and "or"). In this day
and age, having special syntax for bitwise operators seems odd: they're so
rarely used that moving them to functions / methods and reclaiming & and | for
other purposes seems reasonable.

Converge is a full meta-circular system (based on ObjVLisp), and at the VM
level is actually prototyping based (the VM doesn't really know about
classes). So classes seem superficially similar to Python but are actually
quite different. You can see this as new objects are created via Object.new()
rather than the Python-esque Object(). The object system in Converge is
simpler and more consistent than Python.

~~~
apgwoz
> Interestingly, nonlocal was part of Converge before it was proposed for
> Python 3000

Ah! That's interesting.

------
s3graham
See also: <http://boo.codehaus.org/> (e.g.
<http://jira.codehaus.org/browse/BOO-95>)

~~~
jcl
I was thinking the same thing. Boo is decidedly more Pythonic than converge:
you can write more programs that run in both Boo and Python than you can for
converge and Python. Boo is pretty much a statically, implicitly typed Python.
I wish there was a version of Boo that was not tied to the CLR; the closest
thing we have to a high-performance language with Python syntax is Pyrex,
which is good, but not quite as nice as Boo.

~~~
ltratt
It isn't a goal of Converge to be Pythonic as such (particularly as Python 2.x
is a philosophically different beast to Python 1.4/1.5-ish).

My impression of Boo is that its macros are a very different kettle of fish to
Converge's compile-time meta-programming. Boo seems much more similar to
Nemerle than Converge. As far as I can tell, there's no quasi-quoting (which
would mean building ASTs by hand all the time) and no support for things like
hygiene. I'd be happy to be corrected though.

~~~
s3graham
Pre 0.8.1 there was no backtick and it was all manual AST afaict. 0.8.1 has [|
|] which is similar to ` I believe. See second link above. Not sure about
hygiene though, I guess not.

------
ojbyrne
I feel the urge for a poll. "Orientated" vs. "Oriented"
[http://www.askoxford.com/asktheexperts/faq/aboutgrammar/orie...](http://www.askoxford.com/asktheexperts/faq/aboutgrammar/oriented)

------
jamongkad
Meh it's got some butt ugly syntax!

