1st September 2018
"build a working, well-tested, maintainable piece of software to deliver business value"
Somebody told me to use free monads,
but somebody else told they were passé
Should this thing be a class or an object?
Is it ok to use traits?
I don't even know what my package structure
should look like
Am I doing it right?
Is FP actually better than the alternatives?
Don't FP and OOP boil down to the same thing anyway?
But one or the other might still be
a better tool for the job
Photo storage service
User can upload a photo and get back a unique ID
User can retrieve a photo by ID
Concrete effects, interpreters
Domain models and algebras
HTTP clients, config loading, ...
def validate(input: Foo): IO[Either[ValidationError, Bar]]
✓ Local reasoning