The bread and butter of functional programming: function composition.
func chain[A; B; C](f: A -> B; g: B -> C): A -> C
func chain[A; B](f: () -> A; g: A -> B): () -> B