- July 29th, 2015: ... on a roll: Point-free-itize
foo :: (a -> b, a -> b) -> (a, a) -> (b, b)
foo (f,g) (x,y) = (f x, g y) - \[ c^3 \] @das_kube uncurry (***)
- July 29th, 2015: I can't believe this wasn't a #1Liner already. Point-free-itize dup:
dup :: a -> (a,a)
dup x = (x,x) - Antonio Nikishaev @lelff join (,)
- \[ c^3 \] @das_kube id &&& id
- July 23rd, 2015: define pairsies so that, e.g.: pairsies [1,2,3] = {{1, 2}, {1, 3}, {2, 3}} pairsies :: [a] -> Set (Set a)
- pairsies list = concat (list =>> (head &&& tail >>> sequence))
- July 23rd, 2015: define both :: (a -> b) -> (a,a) -> (b,b)
- Chris Copeland @chrisncopeland point-freer: both = uncurry . on (,)
- Brian McKenna @puffnfresh both = join bimap
- July 23rd, 2015: point-free-itize: gen :: Monad m => (m a, m b) -> m (a, b)
- Bob Ippolito @etrepum gen = uncurry (liftM2 (,))
- July 17th, 2015: You may have seen this before, but here we go. point-free-itize swap:
swap :: (a,b) -> (b,a)
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.
Thursday, September 3, 2015
1Liners July 2015
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment