Category theory for JavaScript programmers - guarded functions