Community-managed fork of the Arc dialect of Lisp; for commit privileges submit a pull request.
Clone or download
Latest commit 26d620f Nov 14, 2018
Type Name Latest commit message Commit time
Failed to load latest commit information.
CHANGES Add list comprehensions. Apr 25, 2018
apps added managed app editor Nov 14, 2018
extras Add help for Pd objects Dec 19, 2017
lang Make `anarki-main-namespace` a namespace, rather than a function that… Feb 21, 2018
lib moved data-score, updated js Sep 27, 2018
scribblings In the `anarki` Racket module, stop setting the readtable permanently… Feb 21, 2018
.gitignore added managed app editor Nov 14, 2018
.travis.yml Travis CI debugging: Only try to commit to `gh-pages` from the Racket… Aug 28, 2018
README.markdown . Nov 3, 2018
ac.rkt use Racket's `when` Nov 13, 2018
arc.arc Add a package dependency on the `sha` package. This should fix the Tr… Aug 13, 2018
arc.arc.t Remove one incompatibility with Arc 3.1. Apr 25, 2018
arc.cmd Handle paths with spaces on Windows. Jul 5, 2018 whitespace Sep 6, 2018
boot.rkt Whoops, load the bracket readtable for the command line utilities again. Feb 21, 2018
brackets.rkt In the `anarki` Racket module, stop setting the readtable permanently… Feb 21, 2018
build-web-help.arc In the HTML help, group entries by the files they're documented in. A… Sep 1, 2018
copyright arc0 Apr 12, 2009 Only do an automated commit to `gh-pages` if the repo is named "arcla… Sep 1, 2018
info.rkt Add a package dependency on the `sha` package. This should fix the Tr… Aug 13, 2018
libs.arc call app-start from shell scripts Sep 14, 2018
main.rkt In the `anarki` Racket module, stop setting the readtable permanently… Feb 21, 2018
old-tests.arc Prefer `require` to `load` for loading Arc libraries wherever reasona… Feb 21, 2018
run-recaptcha-test.cmd bugfixes for recaptcha implementation - still fails. Aug 2, 2018
tests.arc update tests.arc Aug 23, 2018


Anarki Travis build

A publicly modifiable 'wiki-like' fork of Arc Lisp

The intention is to be extremely permissive in accepting patches. For commit privileges, just submit your first pull request or ask on Arc Language Forum.

Getting started


First install Racket (v6.11 or later), then

$ raco pkg install sha
$ git clone
$ cd anarki
$ ./    # start the interactive repl
$ cd apps/news
$ ./run-news  # or start News (also with the repl)


If you're new to Arc, or Lisp in general, a good starting point is the Tutorial.

Documentation and help

If you run into trouble, check

News Site

Anarki comes bundled with News, a Hacker News style app.


To run News, first pick your (the admin's) username,

$ cd anarki/apps/news
$ mkdir www
$ echo __username__ > www/admins

You can have multiple admins. Add them all to www/admins, separated by whitespace.

Starting the server

Warning: If you are already running a News site, migrating to this fork might mess up your site's data. Come talk to us first, and be sure to make a backup before the migration.

Now bring up the server,

$ ./run-news

There'll be a pause while the server loads up, with some messages, then you'll see the arc> prompt.

Go to http://localhost:8080. Click on login, and create the account for your username. You should now be logged in as an admin.

(Don't worry about user break or error writing messages.)


To customize News, change the variables at the top of apps/news/news.arc. To change the port your server runs at, modify apps/news/run-news.arc.

Any interactive changes to the prompt will be reflected immediately in the server, without needing to restart it. Hence if you make any changes to apps/news/news.arc, you can load them, by typing (load "apps/news/news.arc") in the repl. If you stop the server or it dies for some reason, previously entered commands are available in the command history (at least if you have Readline installed).


You may want to serve News securely over HTTPS. An example configuration for running Nginx with SSL as a reverse proxy for News can be found in anarki/extras/news.nginx.conf.

Resetting passwords

For password reset mails to be sent out, your must set up an email account to send these from,

$ echo "" > www/app-email  ; email
$ echo "" >> www/app-email     ; smtp server
$ echo "" >> www/app-email  ; user
$ echo "1234" >> www/app-email                 ; password



Anarki has thorough automated tests. To run them, install Mercurial, then,

# start in the anarki directory
$ hg clone
$ ./
arc> (load "tests.arc")

Anarki is explicitly not constrained to maintain compatibility with upstream releases, and compatibility status may swing wildly from commit to commit depending on who takes an interest. To see a list of what's different, type (incompatibilities) at the repl. If you make an incompatible change, please update this list.

Racket interop

Racket expressions can be evaluated with the ($ ...) syntax. For instance, (($ crypto-random-bytes) 16) obtains the crypto-random-bytes function from Racket and makes a call to it.

If you write lots of Racket code and you just want to use Anarki for part of a bigger project, you can raco pkg install anarki and use Anarki to write Racket modules:

#lang anarki
(:provide function-for-use-in-racket)

(= racket-import ($.dynamic-require ...))
(load "relative/path.arc")

(def utility-for-use-in-racket (x)
  (* x (racket-import x))


Note that Anarki does not have private module scopes; the (:provide ...) section is just there to make it easy to require an Anarki-based library from Racket.

Keyword arguments

Anarki has some issues passing keyword arguments to Racket functions, but Racket's keyword-apply can be used for that.