birmingham.io

Examples of Strange Loops

Douglas Hofstadter, who ‘coined the expression’ “Strange Loop”, talking about strange loops at Strange Loop, 2013.

Contains flush toilets, philosophy/Zen/Taoism.

"A strange loop is a cyclic structure that goes through several levels in a hierarchical system. It arises when, by moving only upwards or downwards through the system, one finds oneself back where one started.

This time, I came back to it by looking closely at the meaning of ‘abstraction’ in computer science, a word I thought I understood.

emacs is an editor that includes the elisp interpreter and is written in elisp, so you can reprogram either of them while they are running.

Guix is both a Linux distribution and/or a package manager on other Unices. It uses Scheme Lisp data as a declarative description of packages, or of the complete OS. The system resolves the dependencies and changes can be rolled back. Sadly, it doesn’t seem to have made it into the Debian repo yet.

I’ve been thinking about installing GNU Guix as package manager to automate the builds of my Functional Programming environments on Linux. I’ve found a tool that provides a Text-based UI, written in eLisp, to run in emacs and ‘an emulation’ in Vi’s ‘Evil’ mode. https://github.com/alezost/guix.el. Meanwhile, people are trying to implement emacs in Guile ‘instead of’ eLisp (but I think it’s actually a multi-language interpreter and I may be lost.)

I’ve been on a hunt in the last half hour:

Here’s a beginners’ tutorial for guix on Debian/Ubuntu

but it looks like there’s going to be an apt package for guix in Debian 11, Bullseye.
https://packages.debian.org/search?keywords=guix
Sadly, there’s no apt package in guix, so I may have gone off-topic now :slight_smile:

You regularly see the question, “What language is the Xyz compiler written in?” and, of course, the answer is nearly always “Xyz” which leads to the old ‘joke’,
“How many times do you need to re-compile a new version of a compiler ?”
“Once more than you think.”
The strange loop does terminate, but not where you thought it would.
[If you don’t see why, it assumes an optimising compiler, so the final compilation has to be done by a version of the compiler that has already been optimised.]

I heard someone at a conference talk about developing DEC’s Test Manager and Performance Coverage Analyzer software engineering tools. They must have been compiler writers because, ‘for a laugh’, they turned the tools on themselves and discovered some of their own code wasn’t being run, so neither were the tests and some of the code was used all the time but was very inefficient. The first software the tools improved was themselves.

Proudly sponsored by Bytemark