November 2017
Intermediate to advanced
670 pages
17h 35m
English
Now let's take a peek at the code.
Here are the f and g functions from the preceding diagram:
package composefunc Humanize(b bool) string { if b { return "yes" } else { return "no" }}func Emphasize(s string) string { return s + "!!"}func EmphasizeHumanize(b bool) string { return Emphasize(Humanize(b))}
Now for the new stuff.
We'll create two types. Fbs represents f (or A to B), which takes a bool (true), and returns a string, "yes". Fss represents g (or B to C). Fss takes a string, "yes", and returns a string, "yes!!":
type Fbs func(bool) stringtype Fss func(string) string
Here's our Compose function:
func Compose(g Fss, f Fbs) Fbs { return func(x bool) string { return g(f(x)) }}
Nested inside our Compose ...