amuletml / amulet

An ML-like functional programming language
https://amulet.works/
BSD 3-Clause "New" or "Revised" License
324 stars 14 forks source link

Maintenance of community #297

Closed ShalokShalom closed 2 years ago

ShalokShalom commented 2 years ago

Do I assume correctly, that no community has been build, since nobody wants to maintain it?

I think this language is wonderful, and I wonder if there is any interest.

P.S: So far as I can see, is using the language as dedicated Lua compiler less of a goal?

I imagine, I can use it on top of the Lua implementation fo Godot and Luerl, eventually

SquidDev commented 2 years ago

I graduated from uni last year and, having much less free time, have had to be more selective in what projects I spend time on - sadly Amulet hasn't been near the top of the list.

There's a couple of reasons for this, some of which are personal and some technical:

Don't get me wrong, I really like Amulet, it's just that its execution is lacking (fair, we started this as high-school & uni students) which means that every time I open the project in an editor I end up exhausted before I've even written any code :/.

ShalokShalom commented 2 years ago

The first two points sound like a rewrite could solve these issues 😅

I love this idea of a small, compact ML. FSharp is my favorite language, and well, it sits on .Net.

Lua is a great compilation target, why do you have to write the bindings from scratch?

Do you know any other ML of this kind? I see you are also the dev of Urn, great work.

I am super sad. I thought I found my new language 😂

SquidDev commented 2 years ago

The first two points sound like a rewrite could solve these issues

I don't think it would solve the optimiser one. It's a hard problem whichever angle you come from, and while a different IR might make things easier, it's no magic bullet either.

Lua is a great compilation target, why do you have to write the bindings from scratch?

Because Lua has no type information, whenever you use a non-builtin library (such as lfs, luasocket, etc...) you need to write out all the types yourself (and sometimes do additional work to cajoule them into a form Amulet is happy with).

Obviously many languages have this problem, it's just normally someone has done the hard work for you! Given Lua's relatively small community, I dunno, this feels less tenable.

Do you know any other ML of this kind?

Bucklescript springs to mind here, which complies OCaml to JS - the same model could be used for Lua instead. Looking at https://github.com/hengestone/lua-languages#functional, hypatia seems to be the only one really maintained, but is probably a little too haskelly for my tastes.

ShalokShalom commented 2 years ago

Thanks a lot. When you say optimizer, do you mean that one, that optimizes the code for having only one parameter in functions, which causes a lot of currying, which causes a lot of closures?

SquidDev commented 2 years ago

The optimiser does a whole bunch of things:

Most of the passes are sane, however the "reduce" pass (which does function inlining and that match elimination) is incredibly brittle and doesn't cover several cases it really should.

ShalokShalom commented 2 years ago

@overminddl1 can you help?

OvermindDL1 commented 2 years ago

My free time has basically vanished since I got a daughter, so not currently... ^.^;

SquidDev commented 2 years ago

Oh, congratulations!

ShalokShalom commented 2 years ago

Yeah, applause 🎉

One new form of life is born, one software project dies. The circle of life, I guess. 😉

Much fun with the daughter!