Skip to content

goto-engineering/lfex

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

39 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Lisp Flavored Elixir

Warning: super alpha status, only basic function calls work.

Inspired by Lispex and LFE, LFEX parses S-expressions into the Elixir AST format and runs them.

(IO.puts "Hi") turns into IO.puts("Hi"). Data structure syntax same as Elixir, but no commas are necessary between elements/arguments.

Example:

lfex> (+ 2 2)
4

lfex> (+ 1 (/ 3 (* 2 3)))
1.5

lfex> (IO.puts "Hello")
Hello
:ok

lfex> (Enum.join ["A" "B" "C"] "_")
"A_B_C"

lfex> (Map.put %{:user "Bob"} :user "Billy")
%{:user "Billy"}

Start the REPL

Run mix repl to try out the REPL. Like any Elixir process, end it by pressing Ctrl-C twice.

If rlwrap is installed, you can get free REPL niceties like previous commands and parens matching: rlwrap mix repl.

Todo

  1. Use macros - defmodule, defn
  2. Function references
  3. Compile source files to .beam bytecode
  4. Pattern matching - let?
  5. Anonymous fn syntax? Elixir syntax, Clojure syntax, ES6 syntax?
  6. Dashes in fn names?
  7. Cool REPL functions like call count
  8. Structs
  9. How does threading work? |>? Clojure style ->? Implement as macro?
  10. Define user macros?

About

Lisp Flavored Elixir

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages