- May 24th, 2016:
Given f :: a -> [a] -> b, g :: a -> c
Write h :: c -> [c] -> b, point-free, in terms of f and g
where h x y = f (g x) (map g y) - May 16th, 2016: The next 3 #1Liner are of a piece, using
data CmpV a =
Vec { len :: Int, top :: a, elts :: [a],
cmp :: CmpV a -> CmpV a -> Ordering } - Give the point-free definition of:
twoVs :: CmpV a -> CmpV b -> ([a], [b])
instance Ord (CmpV a) where
compare v1 = uncurry (cmp v1) . (v1,)
Make compare point-free by removing v1 from above definition- An Ord-instance needs an Eq-instance:
instance Eq a => Eq (CmpV a) where
v1 == v2 = elts v1 == elts v2
point-free-itize(==)
- May 16th, 2016: You have the following lambda:
\x y -> x == y || fn x y
where fn :: a -> a -> Bool
Point-free-itize - obadz @obadzz without any fancy uses of the (a ->) Applicative :)
curry $ foldr (||) False . flip map [(==), fn] . flip uncurry - obadz @obadzz with fancy use of (a ->) Applicative :)
curry $ liftA2 (||) (uncurry (==)) (uncurry fn) - Noah Luck Easterly @walkstherain
curry $ uncurry (||) . (uncurry (==) &&& uncurry fn) - May 5th, 2016:
sames :: Eq a => [a] -> [a] -> Int
Counts equal values at the same indices in two lists.
What is the point-free definition?- joomy @cattheory
sames = curry (length . filter (uncurry (==)) . uncurry zip) - bazzargh @bazzargh and then Fatih Karakurt @karakfa
((length . filter id) .) . zipWith (==) - me: sum <<- fromenum="" li="" nbsp="" zipwith="">
- Noah Luck Easterly @walkstherain
sames = ((sum . map fromEnum) .) . zipWith (==) - `getSum . foldMap (Sum . fromEnum)` seems better than `foldr (bool id succ) 0` but both satisfy `[Bool] -> Int`
- Андреев Кирилл @nonaem00
let it = (length .) . (filter id .) . zipWith (==)
->
- joomy @cattheory
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.
Tuesday, June 14, 2016
May 2016 1Liners
One-liners
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment