C
call-with-current-continuation.org
call-with-current-continuation.org · Personal blog · on HN since 2007
Personal site of a programmer writing about Scheme, Forth, concurrent logic languages and small compilers, plus older essays and rants.
What HN saysHN commenters link it for its Forth essays and an old rant about X's clipboard and ICCCM, treating it as a source of classic programming texts.
42HN people shared it
23linked it in comments
30stories submitted
861story points
8 months agolast shared
2007people per year2026
Most-shared posts
- 1Fleng 22 (concurrent logic programming)8 people · 195 points · first shared 2021 · 13 comments on HN
- 2Thoughts on Forth Programming5 people · 160 points · first shared 2019 · 90 comments on HN
- 3Bones: A simple Scheme compiler for x86_64 systems4 people · 107 points · first shared 2014 · 10 comments on HN
- 4Strand Programming Language3 people · 118 points · first shared 2021 · 28 comments on HN
- 5UF – A Traditional Forth for Varvara3 people · 5 points · first shared 2022 · 1 comments on HN
- 6How Software Companies Die (1995)3 people · 3 points · first shared 2017 · discussion on HN
- 7Homepage3 people · first shared 2007
- 8Fp3 people · first shared 2012
- 9The joy of concurrent logic programming2 people · 99 points · first shared 2021 · 23 comments on HN
- 10I hate the X11 ICCCM selection system2 people · 36 points · first shared 2019 · 33 comments on HN
- 11The Brutalist Programming Manifesto1 people · 68 points · first shared 2024 · 88 comments on HN
- 12MicroFLENG – concurrent logic programming for CP/M, C64 and the “uxn” VM1 people · 47 points · first shared 2022 · 4 comments on HN
- 13MA – a single-window clone of Plan9's Acme editor in Tcl/TK1 people · 5 points · first shared 2016 · 1 comments on HN
- 14?- Prolog1 people · 4 points · first shared 2017 · discussion on HN
- 15Stacktor: stack based DSL, inspired by Factor1 people · 4 points · first shared 2011 · discussion on HN
What HN people wrote when they linked it
mnemonicsloth · 2008-05-24
It sounds like you're asking these questions because you're stuck inside the scripting language box. There's a much greater range of choice open to you than Perl/Python/Ruby on the one hand, and C/C++/maybe-Java on the other.
For example, Common Lisp implementations often compile functions as they're entered at the interactive prompt. From your perspective, you see an "interpreter" that runs code on the order of 100 times faster than it should. I'm told popular OCaml and Haskell implementations work this way too.
If you're interested in portability, there are efficient Scheme compilers that target ANSI C, which gives you portability, good integration into just about any environment, and access to lots and lots of library code. My favorite of these is Chicken Scheme, which you can read about at http://www.call-with-current-continuation.org.
silentbicycle · 2009-03-04
Since you explicitly mentioned C# and F#, I'd suggest OCaml. There's a free translation of a French O'Reilly book, _Developing applications with Objective Caml_, at http://caml.inria.fr/pub/docs/oreilly-book/ (the site seems to be down for me at the moment). The first few chapters focus on functional programming, then imperative programming, then compare their strengths, weaknesses, and when using each is most appropriate. (OOP and others are covered later in the book.) It's a pretty good intro to FP, imho.
Once you know FP techniques, you can apply them in many languages people don't tend to think of as functional (though tail-call optimization helps, and support for higher-order functions is all but necessary); I write strongly FP-influenced code in Lua, for example.
Scheme is also an utterly fantastic language, but I'm going to defer recommendations there to others. (Except: I really like Chicken - http://www.call-with-current-continuation.org/)
gml · 2007-09-24
I recently did this, as in about a month ago, I became interested in learning Lisp. I started with a bunch of things. First I tried to get various working environments going like:
Emacs + Slime + SBCL
Emacs + Quack + PLT Scheme
I also tried DrScheme (which is a great learning environment).
Not knowing what i'd really need I also did some searching and discovered a few books:
http://mitpress.mit.edu/sicp/
http://www.ccs.neu.edu/home/dorai/t-y-scheme/t-y-scheme.html
http://www.gigamonkeys.com/book/
i also purchased the little schemer. I learned various interesting things from these different sources.
1. practical common lisp was essentially useless to me since i'd already been kind of feeling sold on using scheme and had very little interest in common lisp. what it DID teach me was how datastructures in lisp are created under the hood (or how one might go about implementing them). from this perspective it was very nice and helpful when understading, car, cdr and mapcar. although i wish i'd had a nice example of implementing a scheme in C.
2. reading The Little Schemer, has been the single most satisfying read of my entire computing life. so much so
that i bought The Seasoned Schemer and The Reasoned Schemer
without hesitation at price. this book will teach you to "think lisp" if you can just make it through the first book you will honestly know everything you need to about the lisp mindset and be ready to actually write useful code and no be shocked or…
self_awareness · 2019-10-16
Classic rant about X's clipboard subsystem, ICCCM:
http://www.call-with-current-continuation.org/rants/icccm.txt
(original mailing list hosting is no longer available)
alexwennerberg · 2023-01-13
Here are some great resources on Forth:
http://www.call-with-current-continuation.org/articles/forth.txt
https://git.sr.ht/~vdupras/duskos/tree/master/fs/doc/design/simple.txt
https://www.youtube.com/watch?v=9TJuOwy4aGA
Let me quote the first essay at length:
> Writing "good" Forth code is very hard, or at least what I consider good
Forth code, which may be different from what others consider good. Forth
has been called a "write only language", but only because it requires
an additional effort to simplify your code to a point where everything
becomes obvious. This is an art, it is a moment of transcendence, which
I don't claim to have ever reached, but sometimes I get a glimpse of it,
an inkling of the fact that if I would work very hard on this, it will
become so simple, so heavily factored, using such obvious and clear names
that everything just falls into place. It is this moment that programmers
experience every once in a while, where a short, simple piece of code
just does what it is supposed to do, without any extra baggage, easily
understandable. To achieve it in Forth is much harder, it may require
more time, many rewrites, but the results are even more satisfying,
as the result is smaller, much simpler, fully self-contained and not
burdened by code that you can not trust. When you forget about that urge
of productivity, which has become the moloch we sacrifice our children to,
you may be able to achieve that particular thing that is called quality,
elegance,…
Towaway69 · 2025-05-16
FLENG[1] - Wow, "low level concurrent logic programming language descended from Prolog" - sounds like an easy swap out for Erlang since they have the same heritage. ;)
[1] http://www.call-with-current-continuation.org/fleng/fleng.html
idahoduncan · 2025-05-13
The Strand programming book states that an early version of the Erlang runtime was implemented in Strand (see "13.1: History" http://www.call-with-current-continuation.org/files/strand-book.pdf#pa… which is an interesting tidbit that I haven't seen come up when the history of Erlang is discussed, like in the featured article.
entaloneralie · 2024-11-04
Strand is one of the languages that particularly blew my mind, I think it was Armstrong that said that Strand was "too parallel"
Strand is a logic programming language for parallel computing, derived from Parlog[2] which itself is a dialect of Prolog[3]. While the language superficially resembles Prolog, depth-first search and backtracking are not provided. Instead execution of a goal spawns a number of processes that execute concurrently.
http://www.call-with-current-continuation.org/strand/strand.html
Bunny_351 · 2024-07-18
See also here for an actively maintained and relatively portable implementation of Flat GHC, Strand and PCN for UNIX systems:
http://www.call-with-current-continuation.org/fleng/fleng.html
alexshendi · 2023-05-08
This is a bit OT, but does anyone know free implementations of logic programming languages other than Prolog? Portability is a bonus.
I already know:
* Strand
* http://www.call-with-current-continuation.org/fleng/fleng.html
* Racket's implementation of datalog
TIA.
harryvederci · 2023-01-14
Not sure if this is useful for hardware, but there's UF [0] for Uxn [1], a tiny VM that can you can get to run on lots and lots of (old and new) devices.
[0]: http://www.call-with-current-continuation.org/uf/README (git repo link at the bottom of that page)
[1]: https://100r.co/site/uxn.html
jstanley · 2022-05-25
Sounds interesting. I think the web page would benefit from some examples of what code in this language looks like.
From scanning the user manual[1] it looks a lot like Prolog, but I can't see any complete example programs.
[1] http://www.call-with-current-continuation.org/microfleng/MANUAL
infogulch · 2021-12-12
A recent submission seems related: The joy of concurrent logic programming
https://news.ycombinator.com/item?id=29139437
http://www.call-with-current-continuation.org/articles/the-joy-of-conc…
Jtsummers · 2021-11-07
> This implementation
additionally can distribute pools of parallel processes over native
OS level threads, thus taking advantage of multicore architectures.
Locking overhead should be small, as data is normally not shared
among processes executing on different threads.
From: http://www.call-with-current-continuation.org/fleng/fleng.html
It seems the author has taken this into account, it's not a 1:1 mapping of processes to OS threads.
doublec · 2021-04-27
From the same author, and in the same family of languages, is FLENG: http://www.call-with-current-continuation.org/fleng/fleng.html
It lacks Strand's distributed features but includes prolog's unification.
QuinnWilton · 2021-04-27
I think this is very indicative of Winkelmann's philosophies about software in general. On his site he writes a little bit about why he thinks Forth is so important, and I think it makes for a good explanation of why he probably implemented Strand like this:
http://www.call-with-current-continuation.org/articles/forth.txt
simplify · 2021-04-26
A sample from their user manual[0]:
% print even numbers between 1 and 10
main :- count(1).
count(11).
count(N) :- N =< 10 | even(N), N2 is N + 1, count(N2).
even(N) :- M is N \\ 2, even(M, N).
even(0, N) :- writeln(N).
even(_, _) :- otherwise | true.
[0] http://www.call-with-current-continuation.org/strand/MANUAL
lionsdan · 2020-09-05
There's also Bones, an R5RS Scheme that compiles to x86_64 assembly (from the Chicken Scheme creator).
http://www.call-with-current-continuation.org/bones/
https://bitbucket.org/bunny351/bones
xashor · 2020-07-09
There is a nice Tcl/Tk port of Acme: http://www.call-with-current-continuation.org/ma/ma.html
cylinder714 · 2019-10-12
Chicken's author also created Bones, a Scheme that outputs x86-64 assembly language.
http://www.call-with-current-continuation.org/bones/
README: http://www.call-with-current-continuation.org/bones/bones.html
drawkbox · 2017-01-07
The age ol' "How Software Companies Die"[1] has much on this point.
The environment that nurtures creative programmers kills management and marketing types - and vice versa....
[1] http://www.call-with-current-continuation.org/rants/how-companies-die.…
dharmatech · 2016-07-25
Furry Paws is an "optimizing whole-program compiler and runtime-system for a dialect of John Backus' FP language":
http://www.call-with-current-continuation.org/fp/
PeCaN · 2016-06-19
As far as FL/FP/FPr go, http://www.call-with-current-continuation.org/fp/ is the most mature and complete implementation I'm aware of.
There's #proglangdesign on freenode where a bunch of us have been on an array language/function-level streak lately. Some people there might be aware of more.