9Hoon is a strict, typed functional language which compiles itself
10to the Nock VM (whose spec fits on a T-shirt).
12Hoon's design goal is to support higher-order typed functional
13programming without category theory, formal logic, or other
14interesting math. The reasoning: (a) a programming language is a
15user interface for programmers; (b) most programmers are not very
18Hoon is not quite as expressive as Haskell, though fairly close.
19But good Hoon style isn't good Haskell style. Hoon encourages
20coders to use higher-order programming as little as possible --
21again, simply for UI reasons. For example, multiple arguments
22are curried by default in Haskell and tupled by default in Hoon.
23The house style has been described as "procedural programming in
24a functional language." The power of Haskell, or close, is there
25when we really need it. But we try not to swat flies with it.
27Hoon is objectively simple: its complexity is bounded by the size
28of the compiler, about 3000 lines of Hoon. This is split evenly
29between frontend (parsing and macro expansion) and backend (code
30generation and type inference).
32Compared to most languages, Hoon has a heavier front end (more
33complex syntax) and a lighter back end (less complex semantics).
34This ratio reflects the belief that our brains are better than
35everyone thinks at learning languages (symbols and/or grammars),
36and worse at learning abstractions (proofs and/or algorithms).
37At first glance, Hoon may look gnarly (though its squiggles are
38more structured than most ASCII-heavy languages). But there's
39less than you might expect under the hood.
41Keeping the Hoon-to-Nock mapping straightforward is a priority.
42Very roughly, Hoon is to Haskell as C is to Pascal. Pascal tries
43to conceal its implementation beneath a layer of abstract
44concepts; C, an "advanced macro assembler," tries to provide a
45similar user experience with few abstract ideas as possible.
keysesc to close
- j k
- move down, up
- enter
- open
- esc
- back, or up a level
- 1 2 3 4
- readme, files, commits, refs
- /
- filter
- y
- copy the clone command
- c
- compare the chosen commit with another (or shift-click both)
- ?
- show or hide this list