Scala Days 2015 - Functional Programming with Arrows
07 June 2015 | Tweet |
Yuriy Polyulya presented at Scala Days Amsterdam 2015
Abstract
If you’re using a structure that’s very like a monad, but isn’t one, then maybe it’s an arrow. Arrows are a general functional programming technique, popular in Haskell, but so far undeservedly overlooked in Scala.
This is a short talk and study case about:
- functions and syntax extension for arrows
- arrow type-class
- what are arrows and how to use them
- arrows and categories
- arrows and monads.
References
- Functional Patterns in Domain Modeling - Composing a domain workflow with statically checked invariants, Ruminations of a Programmer, Debasish Ghosh
- Railway Oriented Programming, F# for fun and profit, Scott Wlaschin
- Arrow’s place in the Applicative/Monad hierarchy, Cactus, Dr. Gerg ˝o Érdi
- Category: The Essence of Composition, Programming Cafe, Bartosz Milewski’s
- Kleisli Categories, Programming Cafe, Bartosz Milewski’s
- Monads Made Difficult, Stephen Diehl
Articles
- John Hughes. November 10, 1998, Generalising Monads to Arrows.
- Chris Heunen and Bart Jacobs, Arrows, like Monads, are Monoids.
- Ted Cooper (theod@pdx.edu), CS510 – Spring 2014, Arrow Basics.
- John Hughes, S-41296 Sweden, Programming with Arrows.
- Robert Atkey, LFCS, 2008, What is a Categorical Model of Arrows?
- Kazuyuki Asada, Kyoto 606-8502, Japan, Arrows are Strong Monads.
- K. Asada, I. Hasuo, (CMCS 2010), 2010, Categorifying computations into components via arrows as profunctors.
- Thorsten Altenkirch, James Chapman, Tarmo Uustalu, Monads Need Not Be Endofunctors.
- Sam Lindley, Philip Wadler, Jeremy Yallop, 2008, Idioms are oblivious, arrows are meticulous, monads are promiscuous.
About Yuriy
Yuriy Polyulya @polyulya is a Software Developer @ Workday and is a member of the Grid Team. The Grid Team use Scala, Akka, Play and Spray to provide Workday’s elastic job execution evironment.