Category Theory and Logic  in Programming