Merge pull request #238 from prt2121/pt/haskell-7.10.1
[jackhill/mal.git] / README.md
index d4b6528..143fc1e 100644 (file)
--- a/README.md
+++ b/README.md
@@ -6,13 +6,16 @@
 
 Mal is a Clojure inspired Lisp interpreter.
 
-Mal is implemented in 50 languages:
+Mal is implemented in 59 languages:
 
+* Ada
 * GNU awk
 * Bash shell
 * C
 * C++
 * C#
+* ChucK
+* GNU CLISP
 * Clojure
 * CoffeeScript
 * Crystal
@@ -34,6 +37,7 @@ Mal is implemented in 50 languages:
 * JavaScript ([Online Demo](http://kanaka.github.io/mal))
 * Julia
 * Kotlin
+* Logo
 * Lua
 * GNU Make
 * mal itself
@@ -44,8 +48,12 @@ Mal is implemented in 50 languages:
 * Objective C
 * OCaml
 * Perl
+* Perl 6
 * PHP
+* PL/pgSQL (Postgres)
+* PL/SQL (Oracle)
 * Postscript
+* PowerShell
 * Python
 * RPython
 * R
@@ -56,6 +64,7 @@ Mal is implemented in 50 languages:
 * Swift
 * Swift 3
 * Tcl
+* VHDL
 * Vimscript
 * Visual Basic.NET
 
@@ -83,8 +92,12 @@ The mal (make a lisp) steps are:
 
 Mal was presented publicly for the first time in a lightning talk at
 Clojure West 2014 (unfortunately there is no video). See
-mal/clojurewest2014.mal for the presentation that was given at the
-conference (yes the presentation is a mal program).
+examples/clojurewest2014.mal for the presentation that was given at the
+conference (yes the presentation is a mal program). At Midwest.io
+2015, Joel Martin gave a presentation on Mal titled "Achievement
+Unlocked: A Better Path to Language Learning".
+[Video](https://www.youtube.com/watch?v=lgyOAiRtZGw),
+[Slides](http://kanaka.github.io/midwest.io.mal/).
 
 If you are interesting in creating a mal implementation (or just
 interested in using mal for something), please drop by the #mal
@@ -107,6 +120,21 @@ make DOCKERIZE=1 "repl^IMPL"
 ```
 
 
+### Ada
+
+*The Ada implementation was created by [Chris Moore](https://github.com/zmower)*
+
+The Ada implementation was developed with GNAT 4.9 on debian. It also
+compiles unchanged on windows if you have windows versions of git,
+GNAT and (optionally) make.  There are no external dependencies
+(readline not implemented).
+
+```
+cd ada
+make
+./stepX_YYY
+```
+
 ### GNU awk
 
 *The GNU awk implementation was created by [Miutsuru kariya](https://github.com/kariya-mitsuru)*
@@ -128,7 +156,8 @@ bash stepX_YYY.sh
 ### C
 
 The C implementation of mal requires the following libraries (lib and
-header packages): glib, libffi6 and either the libedit or GNU readline library.
+header packages): glib, libffi6, libgc, and either the libedit or GNU readline
+library.
 
 ```
 cd c
@@ -165,6 +194,29 @@ make
 mono ./stepX_YYY.exe
 ```
 
+### ChucK
+
+*The ChucK implementation was created by [Vasilij Schneidermann](https://github.com/wasamasa)*
+
+The ChucK implementation has been tested with ChucK 1.3.5.2 on Arch
+Linux.
+
+```
+cd chuck
+./run
+```
+
+### GNU CLISP
+
+*The GNU CLISP implementation was created by [Iqbal Ansari](https://github.com/iqbalansari)*
+
+The implementation has been tested with GNU CLISP v2.49 on Ubuntu 16.04, 14.04 and 12.04
+
+```
+cd clisp
+make
+./run
+```
 
 ### Clojure
 
@@ -188,7 +240,7 @@ coffee ./stepX_YYY
 
 *The Crystal implementation of mal was created by [Linda_pp](https://github.com/rhysd)*
 
-The Crystal implementation of mal has been tested with Crystal 0.10.0.
+The Crystal implementation of mal has been tested with Crystal 0.18.4.
 
 ```
 cd crystal
@@ -288,7 +340,7 @@ mono ./stepX_YYY.exe
 *The Factor implementation was created by [Jordan Lewis (jordanlewis)](https://github.com/jordanlewis)*
 
 The Factor implementation of mal has been tested with Factor 0.97
-([factorcode.org](factorcode.org)).
+([factorcode.org](http://factorcode.org)).
 
 ```
 cd factor
@@ -423,6 +475,17 @@ make
 java -jar stepX_YYY.jar
 ```
 
+### Logo
+
+*The Logo implementation was created by [Dov Murik](https://github.com/dubek)*
+
+The Logo implementation of mal has been tested with UCBLogo 6.0.
+
+```
+cd logo
+logo stepX_YYY.lg
+```
+
 ### Lua
 
 Running the Lua implementation of mal requires lua 5.1 or later,
@@ -540,6 +603,16 @@ cd perl
 perl stepX_YYY.pl
 ```
 
+### Perl 6
+
+*The Perl 6 implementation was created by [Hinrik Örn Sigurðsson](https://github.com/hinrik)*
+
+The Perl 6 implementation was tested on Rakudo Perl 6 2016.04.
+
+```
+cd perl6
+perl6 stepX_YYY.pl
+```
 
 ### PHP 5.3
 
@@ -551,6 +624,45 @@ cd php
 php stepX_YYY.php
 ```
 
+### PL/pgSQL (Postgres SQL Procedural Language)
+
+The PL/pgSQL implementation of mal requires a running Postgres server
+(the "kanaka/mal-test-plpgsql" docker image automatically starts
+a Postgres server). The implementation connects to the Postgres server
+and create a database named "mal" to store tables and stored
+procedures. The wrapper script uses the psql command to connect to the
+server and defaults to the user "postgres" but this can be overridden
+with the PSQL_USER environment variable. A password can be specified
+using the PGPASSWORD environment variable. The implementation has been
+tested with Postgres 9.4.
+
+```
+cd plpgsql
+./wrap.sh stepX_YYY.sql
+    # OR
+PSQL_USER=myuser PGPASSWORD=mypass ./wrap.sh stepX_YYY.sql
+```
+
+### PL/SQL (Oracle SQL Procedural Language)
+
+The PL/pgSQL implementation of mal requires a running Oracle DB
+server (the "kanaka/mal-test-plsql" docker image automatically
+starts an Oracle Express server). The implementation connects to the
+Oracle server to create types, tables and stored procedures. The
+default SQL*Plus logon value (username/password@connect_identifier) is
+"system/oracle" but this can be overridden with the ORACLE_LOGON
+environment variable. The implementation has been tested with Oracle
+Express Edition 11g Release 2. Note that any SQL*Plus connection
+warnings (user password expiration, etc) will interfere with the
+ability of the wrapper script to communicate with the DB.
+
+```
+cd plsql
+./wrap.sh stepX_YYY.sql
+    # OR
+ORACLE_LOGON=myuser/mypass@ORCL ./wrap.sh stepX_YYY.sql
+```
+
 ### Postscript Level 2/3
 
 The Postscript implementation of mal requires ghostscript to run. It
@@ -561,6 +673,16 @@ cd ps
 gs -q -dNODISPLAY -I./ stepX_YYY.ps
 ```
 
+### PowerShell
+
+The PowerShell implementation of mal requires the PowerShell script
+language. It has been tested with PowerShell 6.0.0 Alpha 9 on Linux.
+
+```
+cd powershell
+powershell ./stepX_YYY.ps1
+```
+
 ### Python (2.X or 3.X)
 
 ```
@@ -645,8 +767,7 @@ make
 ### Swift 3
 
 The Swift 3 implementation of mal requires the Swift 3.0 compiler. It
-has been tested with the development version of the Swift 3 from
-2016-02-08.
+has been tested with Swift 3 Preview 3.
 
 ```
 cd swift3
@@ -666,6 +787,18 @@ cd tcl
 tclsh ./stepX_YYY.tcl
 ```
 
+### VHDL
+
+*The VHDL implementation was created by [Dov Murik](https://github.com/dubek)*
+
+The VHDL implementation of mal has been tested with GHDL 0.29.
+
+```
+cd vhdl
+make
+./run_vhdl.sh ./stepX_YYY
+```
+
 ### Vimscript
 
 *The Vimscript implementation was created by [Dov Murik](https://github.com/dubek)*
@@ -696,7 +829,7 @@ mono ./stepX_YYY.exe
 
 ### Functional tests
 
-The are nearly 500 generic functional tests (for all implementations)
+The are over 600 generic functional tests (for all implementations)
 in the `tests/` directory. Each step has a corresponding test file
 containing tests specific to that step. The `runtest.py` test harness
 launches a Mal step implementation and then feeds the tests one at