(f . g) x = f (g x)
f . id = f = id . f
>>> map ((*2) . length) [[], [0, 1, 2], [0]] [0,6,2]
>>> foldr (.) id [(+1), (*3), (^3)] 2 25
>>> let (...) = (.).(.) in ((*2)...(+)) 5 10 30
v1 <- o .:? "opt_field_with_dfl" .!= "default_val" v2 <- o .: "mandatory_field" v3 <- o .:? "opt_field2"