| Archives | https://reasonablypolymorphic.com/index.html |
| An Algebraic Theory of Music | https://reasonablypolymorphic.com/blog/more-algebraic-music |
| Struggling Towards an Algebraic Theory of Music | https://reasonablypolymorphic.com/blog/algebraic-music |
| Arrows to Arrows, Categories to Queries | https://reasonablypolymorphic.com/blog/arrows-to-arrows |
| Theorems for Free Redux | https://reasonablypolymorphic.com/blog/theorems-for-free-redux |
| Analyzing API Design via Algebraic Laws | https://reasonablypolymorphic.com/blog/api-analysis |
| Using Obscure Graph Theory to solve PL Problems | https://reasonablypolymorphic.com/blog/solving-lcsa |
| Bidirectional Instance Contexts | https://reasonablypolymorphic.com/blog/bidirectional-instance-contexts |
| Use Monoids for Construction | https://reasonablypolymorphic.com/blog/use-monoids |
| A New Perspective on Lenses | https://reasonablypolymorphic.com/blog/code-lenses |
| Read the Code, Not the Profile | https://reasonablypolymorphic.com/blog/read-the-code |
| Jujutsu Strategies | https://reasonablypolymorphic.com/blog/jj-strategy |
| FRP in Yampa: Part 4: Routing | https://reasonablypolymorphic.com/blog/yampa-routing |
| FRP in Yampa: Part 3: Switching | https://reasonablypolymorphic.com/blog/yampa-switching |
| FRP in Yampa: Part 2: Arrowized FRP | https://reasonablypolymorphic.com/blog/arrowized-frp |
| FRP in Yampa: Part 1 | https://reasonablypolymorphic.com/blog/yampa-frp |
| Certainty by Construction: Done! | https://reasonablypolymorphic.com/blog/certainty-by-construction |
| Certainty by Construction Progress Report 10 | https://reasonablypolymorphic.com/blog/cbc-report10 |
| Certainty by Construction Progress Report 9 | https://reasonablypolymorphic.com/blog/cbc-report9 |
| Certainty by Construction Progress Report 8 | https://reasonablypolymorphic.com/blog/cbc-report8 |
| Certainty by Construction Progress Report 7 | https://reasonablypolymorphic.com/blog/cbc-report7 |
| Certainty by Construction Progress Report 6 | https://reasonablypolymorphic.com/blog/cbc-report6 |
| Certainty by Construction Progress Report 5 | https://reasonablypolymorphic.com/blog/cbc-report5 |
| Certainty by Construction Progress Report 4 | https://reasonablypolymorphic.com/blog/cbc-report4 |
| Certainty by Construction Progress Report 3 | https://reasonablypolymorphic.com/blog/cbc-report3 |
| Certainty by Construction Progress Report 2 | https://reasonablypolymorphic.com/blog/cbc-report2 |
| Certainty by Construction Progress Report 1 | https://reasonablypolymorphic.com/blog/cbc-report1 |
| The Co-Blub Paradox | https://reasonablypolymorphic.com/blog/coblub |
| Abusing Constraints for Automatic Documentation | https://reasonablypolymorphic.com/blog/abusing-constraints |
| Why Is the Web So Monotonous? Google. | https://reasonablypolymorphic.com/blog/monotonous-web |
| Review: Proof-Carrying Code | https://reasonablypolymorphic.com/blog/proof-carrying-code |
| Review: Syntax-Guided Synthesis | https://reasonablypolymorphic.com/blog/syntax-guided-synthesis |
| Review: Generic Parallel Functional Programming | https://reasonablypolymorphic.com/blog/generic-parallel-fp |
| Review: Lightweight Semiformal Time Complexity Analysis for Purely Functional Data Structures | https://reasonablypolymorphic.com/blog/complexity-analysis |
| Review: A Very Elementary Introduction to Sheaves | https://reasonablypolymorphic.com/blog/review-sheafs |
| Automatic Ring Solving | https://reasonablypolymorphic.com/blog/ring-solving |
| Review: Codata in Action | https://reasonablypolymorphic.com/blog/review-codata |
| Followup to Sorting with Bialgebras | https://reasonablypolymorphic.com/blog/bialgebra-followup |
| Review: Sorting with Bialgebras and Distributive Laws | https://reasonablypolymorphic.com/blog/bialgebras |
| Underlining the Bugs | https://reasonablypolymorphic.com/blog/underline-bugs |
| Review: Copatterns | https://reasonablypolymorphic.com/blog/review-copatterns |
| Review: Clowns to the Left of Me, Jokers to the Right | https://reasonablypolymorphic.com/blog/clowns-jokers |
| Automating Wordle | https://reasonablypolymorphic.com/blog/wordle |
| Review: Shall We Vote on Values, But Bet on Beliefs? | https://reasonablypolymorphic.com/blog/review-futarchy |
| Review: Adders and Arrows | https://reasonablypolymorphic.com/blog/adders-and-arrows |
| Automatically Migrating Eq of No (/=) | https://reasonablypolymorphic.com/blog/comby |
| Dragging Haskell Kicking and Screaming into the Century of the Fruitbat | https://reasonablypolymorphic.com/blog/century-of-the-fruitbat |
| Proving Commutativity of Polysemy Interpreters | https://reasonablypolymorphic.com/blog/proving-commutativity |
| Proving Equivalence of Polysemy Interpreters | https://reasonablypolymorphic.com/blog/proving-equivalence |
| Testing Polysemy With polysemy-check | https://reasonablypolymorphic.com/blog/polysemy-check |
| Porting to Polysemy | https://reasonablypolymorphic.com/blog/porting-to-polysemy |
| Exploring Case Law | https://reasonablypolymorphic.com/blog/exploring-case-law |
| I Built a Terrible Roomba | https://reasonablypolymorphic.com/blog/roomba |
| Haskell in the Real World | https://reasonablypolymorphic.com/blog/3d-printing |
| Separate Your Views; Reify Your Reasoning | https://reasonablypolymorphic.com/blog/separate-your-views-reify-your-reasoning |
| Towards Tactic Metaprogramming in Haskell | https://reasonablypolymorphic.com/blog/towards-tactics |
| Algebra-Driven Design | https://reasonablypolymorphic.com/blog/algebra-driven-design |
| Polysemy: Mea Culpa | https://reasonablypolymorphic.com/blog/mea-culpa |
| A Working Linux DAW | https://reasonablypolymorphic.com/blog/linux-daw |
| Low-Tech AST Extensibility with Extension Patterns | https://reasonablypolymorphic.com/blog/extension-patterns |
| Haskell2020 Is Dead, but All Hope Is Not Lost | https://reasonablypolymorphic.com/blog/haskell202x |
| New Book: Design and Interpretation of Haskell Programs | https://reasonablypolymorphic.com/blog/design-and-interpretation |
| Nimic: A language about nothing | https://reasonablypolymorphic.com/blog/nimic |
| How I Intend to Help Steer GHC | https://reasonablypolymorphic.com/blog/steering |
| Polysemy Internals: The Effect-Interpreter Effect | https://reasonablypolymorphic.com/blog/tactics |
| Implement With Types, Not Your Brain! | https://reasonablypolymorphic.com/blog/typeholes |
| Polysemy Internals: Freer Interpretations of Higher-Order Effects | https://reasonablypolymorphic.com/blog/freer-higher-order-effects |
| Faking Fundeps with Typechecker Plugins | https://reasonablypolymorphic.com/blog/faking-fundeps |
| Writing Custom Optimization Passes | https://reasonablypolymorphic.com/blog/writing-custom-optimizations |
| GHC's Specializer: Much More Than You Wanted to Know | https://reasonablypolymorphic.com/blog/specialization |
| Announcing Polysemy | https://reasonablypolymorphic.com/blog/polysemy |
| Freer, yet Too Costly Higher-order Effects | https://reasonablypolymorphic.com/blog/freer-yet-too-costly |
| Freer Monads: Too Fast, Too Free | https://reasonablypolymorphic.com/blog/too-fast-too-free |
| Freer Monads, More Better Programs | https://reasonablypolymorphic.com/blog/freer-monads |
| How to Write Technical Posts (so people will read them) | https://reasonablypolymorphic.com/blog/writing-technical-posts |
| Thinking with Types | https://reasonablypolymorphic.com/blog/thinking-with-types |
| Protobuffers Are Wrong | https://reasonablypolymorphic.com/blog/protos-are-wrong |
| Gauging Interest in a Type-Level Programming Book | https://reasonablypolymorphic.com/blog/book-of-types |
| Static Analysis of Free Monads | https://reasonablypolymorphic.com/blog/prospecting-free-monads |
| Coercions and Roles for Dummies | https://reasonablypolymorphic.com/blog/roles |
| Performance and Feature Case Studies in Ecstasy | https://reasonablypolymorphic.com/blog/ecstasy-case-study |
| Follow the Denotation | https://reasonablypolymorphic.com/blog/follow-the-denotation |
| Algorithmically Scrapping Your Typeclasses | https://reasonablypolymorphic.com/blog/algorithmic-sytc |
| HKD: Less Terrible than You Might Expect | https://reasonablypolymorphic.com/blog/hkd-not-terrible |
| Free Lenses for Higher-Kinded Data | https://reasonablypolymorphic.com/blog/free-lenses |
| Higher-Kinded Data | https://reasonablypolymorphic.com/blog/higher-kinded-data |
| Devlog: Navigation | https://reasonablypolymorphic.com/blog/navigation |
| Devlog: Action Menus, Timers and Hit Detection | https://reasonablypolymorphic.com/blog/action-menus |
| Why Take Ecstasy | https://reasonablypolymorphic.com/blog/why-take-ecstasy |
| Devlog: Starting a Game Engine | https://reasonablypolymorphic.com/blog/starting-a-game-engine |
| Gentle Theorems: Difference of Squares | https://reasonablypolymorphic.com/blog/difference-of-squares |
| Type-Directed Code Generation | https://reasonablypolymorphic.com/blog/type-directed-code-generation |
| Review: Bananas, Lenses, Envelopes and Barbed Wire | https://reasonablypolymorphic.com/blog/recursion-schemes |
| Modeling Music | https://reasonablypolymorphic.com/blog/modeling-music |
| Review: Information Effects | https://reasonablypolymorphic.com/blog/information-effects |
| Review: Theorems for Free | https://reasonablypolymorphic.com/blog/theorems-for-free |
| Don't Eff It Up | https://reasonablypolymorphic.com/blog/dont-eff-it-up |
| Comonadic Collision Resolution | https://reasonablypolymorphic.com/blog/comonadic-physics |
| Book Announcement | https://reasonablypolymorphic.com/blog/book-announcement |
| Better Data Types a la Carte | https://reasonablypolymorphic.com/blog/better-data-types-a-la-carte |
| An Existential Crisis | https://reasonablypolymorphic.com/blog/existentials |
| Constructing a Comonad | https://reasonablypolymorphic.com/blog/coiter |
| Zap as the Machinery of Program Reduction | https://reasonablypolymorphic.com/blog/zap |
| Wake Up and Smell the Cofree Comonads | https://reasonablypolymorphic.com/blog/cofree-comonads |
| Towards Procedurally Generated Stories via Free Monads | https://reasonablypolymorphic.com/blog/free-stories |
| Elm Is Wrong | https://reasonablypolymorphic.com/blog/elm-is-wrong |
| Of Ideas and Men | https://reasonablypolymorphic.com/blog/ideas-and-men |
| How I Learned to Stop Worrying and Love the Type System | https://reasonablypolymorphic.com/blog/love-types |
| REASONABLYPOLYMORPHIC | https://reasonablypolymorphic.com/ |
| Archives | https://reasonablypolymorphic.com/blog/archives/ |
| Talks | https://reasonablypolymorphic.com/talks |
| github | http://github.com/isovector |
| written | https://leanpub.com/u/sandy-maguire |
| blog | http://sandymaguire.me |
| goodreads | https://www.goodreads.com/review/list/14945161-sandy-maguire?shelf=currently-reading |
| REASONABLY POLYMORPHIC | https://reasonablypolymorphic.com/ |
| ARCHIVES | https://reasonablypolymorphic.com/blog/archives/ |