Functional Architecture
Brian Lonsdorf
@drboolean
https://bit.ly/2Xq8CU4
Goal?
populateContainer
makeItemActive
renderPattern
expandZipCode() {}
getLatLong() {}
getPolygon() {}
save() {}
find() {}
destroy(){}
fullName() {}
averageScore() {}
friends() {}
lastLogin() {}
toString() {}
getCountry() {}
getState() {}
getNumber() {}
getStreet() {}
dedupe() {}
findMinimum() {}
intersection() {}
validate() {}
isPresent(){}
isUnique()
inEnum() {}
expandZipCode() {}
getLatLong() {}
getPolygon() {}
save() {}
find() {}
destroy(){}
fullName() {}
averageScore() {}
friends() {}
lastLogin() {}
toString() {}
getCountry() {}
getState() {}
getNumber() {}
getStreet() {}
dedupe() {}
findMinimum() {}
intersection() {}
validate() {}
isPresent(){}
isUnique()
inEnum() {}
User
Address
Validations
Utils
Repo
Geolocate
Address
User
Preferences
Metaphors?
Procedures
Procedures
// associative�add(add(x, y), z) == add(x, add(y, z))��// commutative�add(x, y) == add(y, x)��// identity�add(x, 0) == x��// distributive�add(multiply(x, y), multiply(x, z)) == multiply(x, add(y,z))
Functions with defined contracts
Highly
generalized functions
Composition
Composition
Composition
Composition
Favor
composable
functions, mostly
CLI blog
All
Menu
Latest
Write
Create Author
Start
Exercises
Code https://drive.google.com/file/d/1XQr5SZvTJ7dFYChr5kV42zO2FMhSATOa/view?usp=sharing