HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
arclanguage
anarki
Arc2008–2025
arclanguage / anarki

anarki

Community-managed fork of the Arc dialect of Lisp; for commit privileges submit a pull request.

116Distinct people
176Mentions
1Explicit recommenders
1.2KGitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

Community-managed fork of the Arc dialect of Lisp; for commit privileges submit a pull request.

GitHub

Where it is used

No documented product use was verified in the last source check.

What people are saying

> Anyhow, sorry to derail the black bar discussion. IMNHO Not at all! Just like I love the fact that someone that didn't realize the meaning of the bar, simply asked (and so…

e12e used a recommendation phrase. One indexed comment matches. This is a phrase match, not a verdict.

No classified warning is attached to this page. Read the discussions before treating silence as approval.

Also in these discussions

Mentioned in the same Hacker News threads. That is not proof they are substitutes.

This week on Hacker News

Nov 8–Nov 15 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/15/2026, 11:19:25 AM UTC.

No direct repository links were found in the indexed HN discussions over the past seven days. Older discussions are available below.

Mentions over time

HN mentions by year176 dated mentions

Observed mentions: 2008-04-15 03:02:27 UTC to 2025-11-25 00:11:41 UTC.

05101520252008-01-01 00:00:00 UTC to 2009-01-01 00:00:00 UTC (exclusive): 6 mentions; 0 submissions, 6 comments20082009-01-01 00:00:00 UTC to 2010-01-01 00:00:00 UTC (exclusive): 8 mentions; 0 submissions, 8 comments2010-01-01 00:00:00 UTC to 2011-01-01 00:00:00 UTC (exclusive): 23 mentions; 1 submissions, 22 comments2011-01-01 00:00:00 UTC to 2012-01-01 00:00:00 UTC (exclusive): 24 mentions; 2 submissions, 22 comments2012-01-01 00:00:00 UTC to 2013-01-01 00:00:00 UTC (exclusive): 5 mentions; 1 submissions, 4 comments2013-01-01 00:00:00 UTC to 2014-01-01 00:00:00 UTC (exclusive): 10 mentions; 0 submissions, 10 comments2014-01-01 00:00:00 UTC to 2015-01-01 00:00:00 UTC (exclusive): 5 mentions; 0 submissions, 5 comments2015-01-01 00:00:00 UTC to 2016-01-01 00:00:00 UTC (exclusive): 9 mentions; 0 submissions, 9 comments2016-01-01 00:00:00 UTC to 2017-01-01 00:00:00 UTC (exclusive): 8 mentions; 0 submissions, 8 comments20162017-01-01 00:00:00 UTC to 2018-01-01 00:00:00 UTC (exclusive): 5 mentions; 1 submissions, 4 comments2018-01-01 00:00:00 UTC to 2019-01-01 00:00:00 UTC (exclusive): 16 mentions; 1 submissions, 15 comments2019-01-01 00:00:00 UTC to 2020-01-01 00:00:00 UTC (exclusive): 13 mentions; 0 submissions, 13 comments2020-01-01 00:00:00 UTC to 2021-01-01 00:00:00 UTC (exclusive): 12 mentions; 2 submissions, 10 comments2021-01-01 00:00:00 UTC to 2022-01-01 00:00:00 UTC (exclusive): 8 mentions; 0 submissions, 8 comments2022-01-01 00:00:00 UTC to 2023-01-01 00:00:00 UTC (exclusive): 9 mentions; 0 submissions, 9 comments2023-01-01 00:00:00 UTC to 2024-01-01 00:00:00 UTC (exclusive): 9 mentions; 0 submissions, 9 comments2024-01-01 00:00:00 UTC to 2025-01-01 00:00:00 UTC (exclusive): 4 mentions; 1 submissions, 3 comments2025-01-01 00:00:00 UTC to 2026-01-01 00:00:00 UTC (exclusive): 2 mentions; 0 submissions, 2 comments2025

Counts come from the repository’s dated source evidence. Index cutoff: 2026-11-02 08:16:59 UTC.

View mention counts and date ranges
UTC ranges include their start and exclude their end. Select a period to filter the source evidence.
PeriodStart (UTC)End (exclusive, UTC)MentionsSubmissionsComments
20082008-01-01 00:00:00 UTC2009-01-01 00:00:00 UTC606
20092009-01-01 00:00:00 UTC2010-01-01 00:00:00 UTC808
20102010-01-01 00:00:00 UTC2011-01-01 00:00:00 UTC23122
20112011-01-01 00:00:00 UTC2012-01-01 00:00:00 UTC24222
20122012-01-01 00:00:00 UTC2013-01-01 00:00:00 UTC514
20132013-01-01 00:00:00 UTC2014-01-01 00:00:00 UTC10010
20142014-01-01 00:00:00 UTC2015-01-01 00:00:00 UTC505
20152015-01-01 00:00:00 UTC2016-01-01 00:00:00 UTC909
20162016-01-01 00:00:00 UTC2017-01-01 00:00:00 UTC808
20172017-01-01 00:00:00 UTC2018-01-01 00:00:00 UTC514
20182018-01-01 00:00:00 UTC2019-01-01 00:00:00 UTC16115
20192019-01-01 00:00:00 UTC2020-01-01 00:00:00 UTC13013
20202020-01-01 00:00:00 UTC2021-01-01 00:00:00 UTC12210
20212021-01-01 00:00:00 UTC2022-01-01 00:00:00 UTC808
20222022-01-01 00:00:00 UTC2023-01-01 00:00:00 UTC909
20232023-01-01 00:00:00 UTC2024-01-01 00:00:00 UTC909
20242024-01-01 00:00:00 UTC2025-01-01 00:00:00 UTC413
20252025-01-01 00:00:00 UTC2026-01-01 00:00:00 UTC202

From the project README

An excerpt from the repository, fetched Nov 12, 2026.

Read the project’s introduction
Anarki 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 Installation First install Racket (v7.7 or later), then in a terminal, run: $ raco pkg install sha $ git clone http://github.com/arclanguage/anarki $ cd anarki You can start the interactive repl with: $ ./arc.sh Or start news (and the repl) with: $ cd apps/news $ ./run-news Tutorial 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 Arc Language Forum Arc Language Wiki Arc Language Documentation Arc's built-in help system by typing (help) at the repl News Site Anarki comes bundled with News, a Hacker News style app. Admins 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.) Customization 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). HTTPS 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 "someone@example.com" > www/app-email ; email $ echo "smtp.example.com" >> www/app-email ; smtp server $ echo "someone@example.com" >> www/app-email ; user $ echo "1234" >> www/app-email ; password Development Tests Anarki has thorough automated tests. # start in the anarki directory $ ./arc.sh 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. Anybody is welcome to make changes to Anarki, but please make sure the tests continue to pass. Since we rely on the unit-test.arc test harness, please also run its tests before committing any changes: $ ./arc.sh (require 'lib/unit-test.arc/unit-test.arc) (load "unit-test.arc/tests.arc") (test-and-error-on-failure) 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)) Scope 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.
Read the full README on GitHub

What Hacker News says

13 sources
PG does indeed use a lot of mutation in his Arc code. "Karma" on `vote-for` on HN is just incremented like this: (++ (karma i!by) (case dir up 1 down -1)) At first this looks nice and simple, but when you have to write `unvote`, you're in trouble (because not all votes increase karma, and you'll have to figure out whether the particular vote being unvoted did). I was reading through The Reasoned Schemer (which covers MiniKanren). They do a lot of unnesting when translating from functional to logical programming. And yes, this does introduce an additional variable each time, making the logical version slightly longer. Apart from the `markdown` in the Hacker News code, there is an `unmarkdown` function[0] (whose job is to translate back from HTML to markdown!). In Prolog you could have gotten away with one predicate for that. That's a
Read the rest
50% saving just there. And you could perhaps use DCGs to cut it down further. Not sure I about Prolog being mostly first order. Plenty of built-in predicates that take predicate arguments, like `maplist`, `findall` and `foldl` that seem to be as commonly used as in Lisp. You might be right about lambdas missing though, so not sure you can emit a predicate (although you could emit the name of a predicate and call it). I'm too new to Prolog to tell, really. [0]: https://github.com/arclanguage/anarki/blob/master/lib/markdo...
In Solving Sudoku with Prolog (2016)
Arc is my first real exposure to a Lisp. I've been piecemeal contributing to the Anarki fork[0] as self-education. A lot of things about it frustrate me. Mostly the global namespace and mutability (and Anarki specific issues with Racket interop.) I know that's a fundamental part of the design and culture, but I think it holds the potential of the language back considerably. [0]https://github.com/arclanguage/anarki
In Arc Language
At its core, a HN clone or any simple forum is just a CRUD app. If you can make something in the language of your choice (with or without framework, it doesn't matter) that handles user accounts and reading from/writing to a database, then you're already a decent amount of the way there. Beyond that, assuming you're using a SQL database and want threading, study methods to represent tree structures from that[0]. [0]https://stackoverflow.com/questions/2175882/how-to-represent... The closest thing to actual HN source code that's publicly available is probably Anarki[0] which is a public fork of Arc[1], a lisp created by PG. That codebase does already deviate from HN in several ways, is not guaranteed to be stable and doesn't represent what might be considered modern best practices for application design, but contributions are always welcome
Read the rest
, and if you want to know how HN itself works, in general terms, that's probably the closest you're going to get. You can also search "hacker news clone[2]" here to find examples written in various languages. [0]https://github.com/arclanguage/anarki [1]http://arclanguage.org/forum [2]https://hn.algolia.com/?query=hacker%20news%20clone
In Ask HN: How to build a Reddit/Hackernews like website?

MAKE YOURSELF AT HOME

A few shortcuts

/
Search the collection
?
Open this guide
Esc
Close dialogs and navigation

Your saved repositories and interests stay in this browser.