This is the repository for the Budapest chapter of Papers We Love. As a local chapter we follow the Papers We Love Code of Conduct.
What was the last paper you read and loved within the realm of computing? What did it inspire you to build or tinker with? Come share the ideas in an awesome academic/research paper with fellow engineers, programmers, and paper-readers. Lead a session and show off code that you wrote that implements these ideas or just give us the lowdown about the paper. Or, just come, listen, and discuss!
We're curating this repository for papers presented at Papers We Love Budapest. You can contribute by adding PR's for papers, code, and/or links to other repositories, like the main Papers We Love repo, here.
If you need to reach out to us or have ideas for papers, just ask us via our Twitter account!
If you have a paper you love and want to give a presentation about it, create an issue on this repo.
This paper explores the use monads to structure functional programs. No prior knowledge of monads or category theory is required.
Monads increase the ease with which programs may be modified. They can mimic the effect of impure features such as exceptions, state, and continuations; and also provide effects not easily achieved with such features. The types of a program reflect which effects occur.
The first section is an extended example of the use of monads. A simple interpreter is modified to support various extra features: error messages, state, output, and non-deterministic choice. The second section describes the relation between monads and continuation-passing style. The third section sketches how monads are used in a compiler for Haskell that is written in Haskell.
- The original paper: Philip Wadler - The Essence of Functional Programming
- Channel 9 presentation based on the original paper
- A good intro to monads
Everybody learns about balanced binary search trees in their introductory computer science classes, but even the stouthearted tremble at the thought of actually implementing such a beast. The details surrounding rebalancing are usually just too messy. To show that this need not be the case, we present an algorithm for insertion into red-black trees (Guibas & Sedgewick, 1978) that any competent programmer should be able to implement in fifteen minutes or less.
- Chris Okasaki, Red-Black Trees in a Functional Setting (J. Functional Programming 9(4), July 1999, 471–477)
- Chris Okasaki, Purely Functional Data Structures (Cambridge University Press, 1998) (Includes a discussion of red-black trees, too.)
- Apple Inc, The Swift Programming Language (Swift 4 beta edition, 2017)
- Karoly Lorentey, Optimizing Collections in Swift (objc.io, 2017)
- Swift Talk episode on Red-Black Trees (subscription required)
GitHub projects:
- https://github.com/lorentey/Attabench — Swift microbenchmarking environment
- https://github.com/objcio/OptimizingCollections — Sample code from my book, including two implementations for red-black trees
Events are posted to the Papers We Love Budapest meetup group.