8Hoon is a strict, typed functional language which compiles itself
9to the Nock VM (whose spec fits on a T-shirt).
11Hoon's design goal is to support higher-order typed functional
12programming without category theory, formal logic, or other
13interesting math. The reasoning: (a) a programming language is a
14user interface for programmers; (b) most programmers are not very
15good at math. Hoon is not quite as expressive as Haskell, though
18Good Hoon style varies from good Haskell style. Hoon encourages
19coders to use higher-order programming as little as possible --
20again, simply for UI reasons. For example, multiple arguments
21are curried by default in Haskell and tupled by default in Hoon.
22The house style has been described as "procedural programming in
23a functional language." The power of Haskell, or close, is there
24when we really need it. But we try not to swat flies with it.
26Hoon is objectively simple: its complexity is bounded by the size
27of the compiler, about 3000 lines of Hoon. This is split about
28halfway half between frontend (parsing and macro expansion) and
29backend (code generation and type inference).
31This parser-heavy ratio reflects the belief that our brains are
32better than everyone thinks at learning languages (symbols and/or
33grammars), and worse at learning abstractions (proofs and/or
34algorithms). At first glance, Hoon may look gnarly (though its
35squiggles are more structured than most ASCII-heavy languages).
36But there's surprisingly little under the hood.
38Keeping the Hoon-to-Nock mapping straightforward is a priority.
39Very roughly, Hoon is to Haskell as C is to Pascal. Pascal tries
40to conceal its implementation beneath a layer of abstract
41concepts; C, an "advanced macro assembler," tries to provide a
42similar 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