Git Product home page Git Product logo

lfe's Introduction

LFE

LFE, Lisp Flavoured Erlang, is a lisp syntax front-end to the Erlang compiler. Code produced with it is compatible with "normal" Erlang code. An LFE evaluator and shell is also included.

Installation

LFE can be installed in different ways depending on how it is intended to be used:

  • use lfetool to create projects (which will automatically have LFE as a dependency when it creates skeleton libraries, OTP apps, etc.; or
  • use LFE directly in a working dir, e.g.:
    $ git clone https://github.com/rvirding/lfe.git
    $ cd lfe
    $ make compile

The second alternative compiles all the files. After this has been done programs for starting the REPL and compiling LFE files can be installed with:

    $ make install

By default this will create the programs lfe, lfec and lfescript in the same directory as the erl program. This can changed by defining the make variable DESTBINDIR to point to the desired directory. So:

    $ make install DESTBINDIR=/Users/rv/bin

will put the programs in /Users/rv/bin.

REPL

If you have used lfetool to set up your project, you can simply do this to start a REPL:

    $ make shell
    Erlang 17 (erts-6.0) [source] [64-bit] [smp:8:8] ...

    LFE Shell 6.0 (abort with ^G)
    >

Note that this will recompile all the deps (often useful for projects with changing dependencies). If you would prefer to only recompile code for the project itself, you can use make shell-no-deps instead.

If you're running LFE from a git clone working dir, you can start the REPL like so:

    $ lfe
    Erlang 17 (erts-6.0) [source] [64-bit] [smp:8:8] ...

    LFE Shell V6.0 (abort with ^G)
    >

and run an LFE shell script in the same style as shell scripts with:

    $ lfe script-name script-arg-1 ...

Usage

The docs site has several places to explore that will show you how to start using LFE. However, here's a quick taste:

  • start up an LFE REPL as demonstrated above
  • then, do something like this:
    > (* 2 (+ 1 2 3 4 5 6))
    42
    > (* 2 (lists:foldl (lambda (n acc) (+ n acc)) 0 (lists:seq 1 6)))
    42

Docker Support

LFE now supports Docker. To get started, simply do the following, once you have Docker set up on your machine:

$ docker pull lfex/lfe

Alternatively, you could build the image yourself:

$ cd lfe
$ docker build .

Here are a couple of simple usage examples:

$ docker run lfex/lfe
42
$ docker run -t -i lfex/lfe /usr/bin/lfe

That last command will dump you into the LFE REPL on a running container of the lfex/lfe Docker image. For more information on using Docker with LFE, be sure to read the tutorial.

Documentation

Classic Docs

Files with more technical details:

lfe's People

Contributors

rvirding avatar oubiwann avatar mankykitty avatar purcell avatar klaustrainer avatar redpine50 avatar aeronotix avatar blt avatar dry avatar norton avatar mattsta avatar nobukazuhanada avatar wardbekker avatar zkessin avatar

Watchers

Subhrendu Sarkar avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.