This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
Native Arrays are not great structures for cellular automata. | |
Non-empty, circular, doubly-linked lists would be ideal... | |
but all we really need to do is write a comonadic-like interface | |
such that it _pretends_ that the array is circular, and can thus | |
pass the exfn below a sort of "local" slice of an Array as if it were circular. | |
So you can mostly ignore the implementation mess below | |
*/ | |
Array.prototype.extendNear = function(exfn){ | |
const len = this.length; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
In JavaScript, objects can be used to serve various purposes. | |
To maximise our usage of the type system, we should assign different types to our objects depending | |
on the desired purpose. | |
In this blog post I will clarify two common purposes for objects known as records and dictionaries | |
(aka maps), and how they can both be used with regards to the type system. |