But different to those two, types are no meta-language concepts, but first-order values in JavaScript itself.
It goes back to the idea that 1. a type is a set of values, and 2. that in the whole universe V
of values, each set S ⊆ V
has a unique functional counterpart, namely the characteristic function χS:V→{false,true}
.
This whole χλ-systems approach (Greek chi "χ" for characteristic function types and lambda "λ" for functional programming) is much more elegant and eloquent than Hindley-Milner systems (in Haskell et al).
The shift from coding to unit editing is similar to the evolution from original HTML to modern HTML+CSS, where the semantics is isolated from the display style of documents. The "syntax-free" Units also concentrate on the meaning of values, and the compiled code (be it a global script, a Node module or a ES6 module), the user-friendly document and a testing suite (with type checking and session testing) are automatically generated.
The whole endeavor started in 2013 with a post on the forum of the Dutch Haskell User Group and by that time I thought this could be done very quickly. Meanwhile (January 2017), the version I am using is 6.2 and from version 2 or 3 onwards, I already started to generate new versions with the latest existing one. There is still a lot I would like to change and I don't consider this the release I advice programmers to learn, just yet. But things are already working and I already finished another project (the Caretaker in a Project House) which is due to publication and runs on the existing TofJs library. I therefore put two things out in the open and for download from the NPM repository for use on the Node machine: tofjs-full, the full suite of all TofJs files, and caretaker-in-a-project-house, a system for managing digital projects.
Initially, the whole thing was called "TypeOfFun.js". Over time, that abbreviated to "ToF" for the title of a type system on a functional language and χλ-approach in general, and ToF.js for the fact that this implementation was with and in JavaScript. A nice connotation is also the fact that the colloquial Dutch "tof" means "cool" and "nice". Eventually, all letters in "ToF.js" went small and turned into "tof.js", because that is the easiest way. But words in English don't contain dots, a dot rather marks the end of a sentence. And proper names are capitalized in English. Therefore, we use the Camel Case version "TofJs" of "tof.js", when we use it as a proper name in native language.
So, "tof.js" is the artificial title, which is written "TofJs" in fancy colorful and "TofJs" in plain text mode. Finally, there is also the varnished image version of the title that serves as a logo: