Incorporates strong typing over predicate logic programming, and, conversely, incorporates predicate logic programming into strongly typed functional languages. The style of predicate logic is from Prolog; the strongly typed functional language is Haskell.
October 15th, 2015: Matrix-themed problem dotProduct :: Num a => [a] -> [a] -> a dotProduct a b = sum (zipWith (*) a b) point-free-itize the definition
Freddy Román @frcepeda dotProduct = sum `dot` zipWith (*) where dot = (.).(.)
October 13th, 2015: You're given either fst or snd, but don't know which. Define a function that returns its dual: dual :: ((a,a) -> a) -> ((a,a) -> a) n.b.: The tuples here have BOTH fst and snd as the same type: a Also, a-values have NO typeclass constraints. You CAN NOT use (==) nor (>)
Michael Thomas @mjtjunior dual f = f (snd,fst)
Francisco Soares Nt @frsoares dual = uncurry . flip . curry
Fernando Castor @fernandocastor dual f = \(x,y) -> f (y, x) (I hadn't seen @mjtjunior's answer beforehand)