HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
asrp
flpc
Forth2018–2021
asrp / flpc

flpc

Forth Lisp Python Continuum: A small highly dynamic self-bootstrapping language

7Distinct people
8Mentions
0Explicit recommenders
226GitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

Forth Lisp Python Continuum: A small highly dynamic self-bootstrapping language

GitHub

Where it is used

No documented product use has been verified yet.

What people are saying

No recommendation phrase was found in the indexed comments.

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

Also in these discussions

No other repository is repeatedly linked in the same discussions.

This week on Hacker News

Nov 7–Nov 14 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/14/2026, 3:56:07 PM 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 year8 dated mentions

Observed mentions: 2018-02-13 19:36:57 UTC to 2021-11-18 03:24:30 UTC.

012342018-01-01 00:00:00 UTC to 2019-01-01 00:00:00 UTC (exclusive): 2 mentions; 2 submissions, 0 comments20182019-01-01 00:00:00 UTC to 2020-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments20192020-01-01 00:00:00 UTC to 2021-01-01 00:00:00 UTC (exclusive): 4 mentions; 1 submissions, 3 comments2021-01-01 00:00:00 UTC to 2022-01-01 00:00:00 UTC (exclusive): 2 mentions; 0 submissions, 2 comments2021

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
20182018-01-01 00:00:00 UTC2019-01-01 00:00:00 UTC220
20192019-01-01 00:00:00 UTC2020-01-01 00:00:00 UTC000
20202020-01-01 00:00:00 UTC2021-01-01 00:00:00 UTC413
20212021-01-01 00:00:00 UTC2022-01-01 00:00:00 UTC202

What Hacker News says

8 sources
> I've actually never considered putting the comment first! I'll have to think about that one. I'm sure there are many competing constraints so definitely don't do it because I'm suggesting this on a whim. :) My reasoning is that as a human reader, the comment is the more readable part, so I'd want to see it first. And for a computer, it probably doesn't care if the op code appears first or not. > You probably don't want to understand Haskell's loop fusion by comparing source and generated code. Indeed. But even though C and Haskell are very different, I think they share a common philosophy about compilation where you can basically do whatever you want as long as it still produces the same result. I vaguely remember looking at Python generate bytecode (with `dis.dis`) and seeing it wasn't too bad. I haven't tried it on a larger program th
Read the rest
ough. There's tcc (and more recently chibicc that I haven't had a chance to check out yet) that you're probably already aware of. Is the generated output still pretty bad. I'll also throw my own attempt in the ring - High level https://github.com/asrp/flpc/blob/master/lib/stage0.flpc - Low level (up to line 45) https://github.com/asrp/flpc/blob/master/precompiled/self.f even though it's not quite optimized for this purpose and the code itself is still a bit unclean. If there was a syntax highlighter for the low level language, I'd probably highlight "[", "]" and "bind:" as a start. I can try to clarify any obscure syntax or primitive. Some more general ideas to get aroud the issue. - Invoke optimization only when asked specifically (and apply the optimization locally). That is, optimization would need at least additional syntax in the language. - Explicitly track correspondance between source and target (at the character or token level) and also do this in each optimization pass. Maybe even keep the intermediate values of each pass so you can browse through it like a stack trace. > In my mind there's an idea maze where there are 3 major possibilities for improving the future of software: I guess I'm trying another route even though I don't know if it fits the definition of improving the future of software. d) Have programmers make their own compiler/interpreter and language by giving them the tools and knowledge to do that (more) easily. This would (hopefully) avoid the black box/magic issue since the programmer would know the details of the inner workings by virtue of having written it. Though I'm most definitely very far from the goal and the questions can be asked about how to improve their target language.
In SubX: A minimalist assembly language for a subset of the x86 ISA (2019)
But why? I don't see that the author explains why he doesn't use what's already in the language which he uses to implement all his "dictionaries": https://docs.python.org/3/tutorial/datastructures.html#dicti... Also, the "improvement" is when starting from "a linear search through all of keys"? Edit: Thanks to anonymoushn, so the language in which the "dictionaries" are implemented is actually an independent language: "Almost all of Flpc is written in Flpc itself and defined at runtime. This means almost everything is modifiable at runtime using rebind: including the loop for reading input, compiling functions, looking up names and rebind: itself!" From: https://github.com/asrp/flpc
In Speed improvements using hash tables
> Those languages have nothing in common other than being pleasant to work with.. That's where the author had an insight, that they (could) have everything in common - except for the syntax on a surface level. Underneath, languages are just different ways to produce and operate on the same "stuff", data and algorithms - values, function, list, dictionary, stack. So, to me it makes sense that there can be a Lisp-y flavor of Python, Pythonic flavor of Lisp, Forthy Python, and so on. It's a matter of parsing/compiling them into a common format, targeting the same interpreter or virtual machine. That said, this Forth-Lisp-Python Continuum verges on mad genius, to have all these different syntaxes in one language. It was interesting to see this project, since I've been working on a hobby language, whose syntax is infix-oriented like C (but eve
Read the rest
rything is an expression). It gets parsed into a prefix-oriented Lisp-like syntax tree. The interpreter is a "machine" based on Lisp's eval, with lambda, macro, tail-call optimization, etc. So, basically, the language is just syntactic sugar that compiles down to whatever the machine expects. I plan to implement another (much simpler) parser for a Lisp-flavor of the same language. In the case of FLPContinuum, I see that the interpreter is a stack-based loop (https://github.com/asrp/flpc/blob/f47de76fcab6d2d2b1840e5376...). The actual implementation of the "machine" almost doesn't matter for the language(s) though, as long as the interface stays the same.
In Forth Lisp Python Continuum: A small highly-dynamic self-bootstrapping language

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.