~brenns10/funlisp

b493ecaed34c1354b9c1511c3b4766ea7adc8eb7 — Stephen Brennan 2 years ago ed89fc0
Nicer frontpages
2 files changed, 59 insertions(+), 14 deletions(-)

M README.md
M doc/index.rst
M README.md => README.md +38 -14
@@ 1,25 1,49 @@
funlisp
=======

Another lisp implementation, this time aiming to be self-contained, portable,
well documented, and easy to embed and use.  This implementation is derived from
[libstephen lisp][], which is in turn built off the experience of an earlier
[attempt][lisp v1]. Try out the repl with:
A fun implementation of a lisp-like language, made just for embedding into your
project! The primary goals of this project are ease of embedding, good
portability, and excellent documentation. Check out the [documentation][] or
grab the source and give it a try:

    make bin/repl
    bin/repl
    $ make bin/repl
    $ bin/repl
    > (+ 5 5)
    10

Since funlisp is aimed at being easily embeddable, the [tools/](tools/)
directory is full of sample programs using the library. You can also check out
the documentation on [Read The Docs](https://funlisp.readthedocs.io) or within
the [source](doc/index.rst).
directory is full of sample C programs using the library. There are also sample
scripts within [scripts/](scripts/). You can run them with the `runfile` tool:

There are sample scripts within [scripts/](scripts/). You can run them with:
    $ make bin/runfile
    $ bin/runfile scripts/hello_world.lisp

    make bin/runfile
    bin/runfile scripts/hello_world.lisp
[Read the Docs!][documentation]

[libstephen lisp]: https://github.com/brenns10/libstephen/tree/master/src/lisp
[lisp v1]: https://github.com/brenns10/lisp
Using
-----

I still consider this project to be in a beta state. Some small breaking changes
are still happening to the API, but they are getting smaller. I hope to cut a v1
release soon, but in the meantime feel free to build a copy and use it in your
library :)

Contributing
------------

I'm hoping to build a clean and understandable lisp. Your contributions, in
terms of reproducible bug reports or code submissions, are welcome. Please feel
free to submit a bug report on Github or via email (see the git logs for my
email address). Patch submissions are welcome again over Github, or via email
(`man git send-email`).

This project is licensed under Revised BSD - see the LICENSE file for details.

History
-------

This is part of a [long](https://github.com/brenns10/lisp)
[line](https://github.com/brenns10/libstephen/tree/master/src/lisp) of lisp
interpreters I've written. Hopefully they're getting better, not worse :P

[documentation]: https://funlisp.readthedocs.io

M doc/index.rst => doc/index.rst +21 -0
@@ 6,7 6,28 @@ a dialect of lisp, but doesn't adhere to any particular standard. This
documentation contains information for those looking to learn the language, as
well as those looking to embed and extend it.

You can get started by cloning the repository from GitHub, and then compiling
the REPL:

.. code::

    $ git clone https://github.com/brenns10/funlisp
    $ make bin/repl
    > (define hello (lambda () (print "hello world")))
    <lambda function>
    > (hello)
    hello world

From there, you can evaluate some arithmetic and write some lambdas! See the
table of contents below for guidance on the language, and how to embed the
interpreter in your program. There is also some (limited) documentation on the
internals of the interpreter, to help interested readers of my code (and
probably me someday).

Visit the repository_ for more information, to view the source, to report bugs,
or even to begin contributing!

.. _repository: https://github.com/brenns10/funlisp

.. toctree::
  :maxdepth: 2