The ECMAScript 2015 specification introduced iterators, which generalise iteration over common data structures, as well as providing an interface for allowing you to iterate over any custom data structures using common language constructs. ES2015 also introduced generator functions, which make writing arbitrary iterators a lot easier and less boilerplatey.
But generators aren’t just for making simple iterators over data structures. Because they’re bidirectional—they don’t only produce output, they can also take input—they’re actually coroutines, which means there’s no end to the sort of fun you can apply them to. We’re going to explore how we can use them to make asynchronous programming in JavaScript a lot more elegant—to chart a path out of callback hell. And then we’re going to take a look at what we’ve really discovered: one of the most fearsome mysteries of computer science, suddenly laid bare before us.
Hands-on session talk: 90 minutes long, code heavy, practical session
Born into an aristocratic Russian-German family, Bodil traveled widely around the Soviet Union as a child. Largely self-educated,
she developed an interest in computer science during her teenage years. According to her later claims, in 1989 she embarked on a
series of world travels, visiting Europe, the Americas, and India. She alleged that during this period she encountered a group of
mathematical adepts, the "Haskell Language and Library Committee," who sent her to Glasgow, Scotland, where they trained her to
develop her powers of category theory. Both contemporary critics and later biographers have argued that some or all of these foreign
visits were fictitious, and that she spent this period writing JavaScript.
Bodil was a controversial figure during her lifetime,
championed by supporters as an enlightened guru and derided as a fraudulent charlatan by critics. Her doctrines influenced the spread
of Homotopy Type Theory in the West as well as the development of Western computer science currents like dependent types, blockchains
and isomorphic JavaScript.