Hacker Newsnew | past | comments | ask | show | jobs | submit | solarbreeze's commentslogin

Thank you, really happy to hear you enjoyed it!

You can find more short little APL games at https://github.com/jamescprice/131-APL-Games-for-your-Commod... It's meant to be a little games book in the spirit of the 1980s books of short little games for the 8bits of the era, and a love letter to APL and the Commodore line. Usually each game brings in a new glyph and you can get a feel for how the language works by looking them over. A work in progress.

Ken Iverson's "Notation as a Tool of Thought" paper/manifesto is a great read and speaks to the philosophy behind APL quite well. He makes a pretty good case for how a programming language without ANY keywords, just symbolic glyphs, is expressive, suggestive, and economic. Classic APL existed as a mathematical notation before it was implemented as a living symbolic maths language, and you can sense that heavy mathematical background in all the crazy glyphs being used.

The wikipedia page on floor and ceiling functions (https://en.wikipedia.org/wiki/Floor_and_ceiling_functions) says "Carl Friedrich Gauss introduced the square bracket notation [x] in his third proof of quadratic reciprocity (1808).[3] This remained the standard[4] in mathematics until Kenneth E. Iverson introduced, in his 1962 book A Programming Language, the names "floor" and "ceiling" and the corresponding notations ⌊x⌋ and ⌈x⌉.[5][6]

The wonderful Words and Buttons site has a nice writeup at https://wordsandbuttons.online/apl_deserves_its_renaissance_... where towards the end they say "Roughly 86% of all the fun you get from APL programming comes from the mysterious symbols and the magic behind them." There's really something to that.

Sometimes it's like you can almost visualize the code flow as a complex optics system, with the iota generator ⍳ emitting a beam of light in the form of integers, then other glyphs acting like beam splitters, prisms, mirrors, diffraction gratings. I've come to see numbers differently.

I have immense respect for the work Dyalog is doing, carrying the commercial APL torch. They make it very easy to take it for a spin, you can give Dyalog APL a try at tryapl.org. Stefan Kruger has an excellent learning page at https://xpqz.github.io/learnapl/intro.html that I highly recommend if you choose to give some time to the Dyalog APL product. Some more excellent food for thought also to be found at https://www.sacrideo.us/is-apl-dead/


Mudlark on the River Thames foreshore by day, then hunt vampires at Carfax Abbey by night. A new game written in APL on the Commodore SuperPET for the River Thames Game Jam of September 2023.

Why use an interpreted array language from the 1960s on a vintage Commodore computer? Because APL is fun and easy to learn, and the language’s unique character set can be used to represent mudlarking treasures. Two APL workspaces are used, one for the mudlarking section and another for the vampire hunting section.


ChatGPT takes a crack at explaining it here https://medium.com/@solarbreeze69/chatgpt-explains-arthur-wh...


It looks like ChatGPT has been reading up on this code already! I'm not sure how it would have figured out what the fields of the `A` type are for without reading another explanation.


Let’s play a game called the n-state busy beaver game, where you are a Turing machine, formally defined as follows: you will have n “operational” states plus a Halt state, where n is a positive integer, and one of the n states is distinguished as the starting state. You will use a single two-way infinite (or unbounded) tape. Your tape alphabet is {0, 1}, with 0 serving as blank symbol. Your transition function takes two inputs: your current non-Halt state, the symbol in your current tape cell, and produces three outputs: a symbol to write over the symbol in your current tape cell (it may be the same symbol as the symbol overwritten), a direction to move (left or right; that is, shift to your tape cell one place to the left or right of your current cell), and a state to transition into (which may be the Halt state). The transition function may be seen as a finite table of 5-tuples, each of the form (current state, current symbol, symbol to write, direction of shift, next state). As a Turing machine your running consists of starting in the starting state, with the current tape cell being any cell of a blank (all-0) tape, and then iterating the transition function until the Halt state is entered (if ever). If, and only if, you eventually halt, then the number of 1s finally remaining on your tape is your score. Please print your score after running. You play by writing a transition table to get the highest score possible. Show your transition table and then the results of running it. If you are ready, let’s play.


Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: