Skip to content

Add another elixir implementation#732

Open
chrooti wants to merge 1 commit intokanaka:masterfrom
chrooti:elixir-2
Open

Add another elixir implementation#732
chrooti wants to merge 1 commit intokanaka:masterfrom
chrooti:elixir-2

Conversation

@chrooti
Copy link

@chrooti chrooti commented Feb 12, 2026

I've done a second elixir implementation and I thought about submitting it. It is incrementally better than the existing solution IMO but not by a lot. I'll leave you to judge whether this is merge worthy or not (at least I had fun!).

Differences:

  • doesn't use Agents or external processes to keep the env state, but uses a fully functional approach (okay, except for exceptions)
  • in some places (e.g. the quasiquote code) my implementatiion is arguably cleaner
  • doesn't use escripts (not a pro or a con, although there is no big, elixir-embedding executable built when you run this, it just runs off the already compiled BEAM bytecode files)
  • fully type checked (as much as dialyzer allows, but typing annotations help humans too)

Cons:

  • leaks memory due to the way I implemented nested envs, a separate GC pass is needed which I haven't implemented.

I'm not sure if the single commit format is good or not, I'm looking for feedback on that.

Anyway, thanks for the challenge, it was not my first approach with lisp, but if it were it would have been much more fun :)

Pull request requirements:

  • Commits are well written and well organized.
  • Commits for a specific implementation should be prefixed with
    the implementation name.
  • Github Actions CI passes all checks (including self-host)

Additional requirements if you are adding a new implementation (see FAQ for details):

  • Follow incremental structure (no common eval code)
  • Add impls/<IMPL>/Dockerfile
  • Add impls/<IMPL>/Makefile
  • Update IMPLS.yml
  • Update Makefile.impls
  • Update README.md

@chrooti chrooti force-pushed the elixir-2 branch 4 times, most recently from 6844a0b to 3f658bc Compare February 12, 2026 22:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant