dotfiles/dotfiles/lib/bin/knightDeltas.hs

23 lines
661 B
Haskell
Raw Normal View History

2018-03-23 21:25:09 -07:00
#!/usr/bin/env run_haskell_stack.sh
import Data.Bifunctor
import Data.Tuple
knightDeltasSimple =
applyAll [swap] (1, 2)
>>= applyAll [first negate, second negate, bimapBoth negate]
where applyAll fns v = map ($ v) $ id:fns
bimapBoth fn = bimap fn fn
knightDeltas = applyInStages [(1, 2)]
[ [swap]
, [bimapBoth (* 2)]
, [first negate, second negate, bimapBoth negate]
]
where applyAll fns v = map ($ v) $ id:fns
applyAllToValues values fns = values >>= applyAll fns
applyInStages = foldl applyAllToValues
bimapBoth fn = bimap fn fn
main = print knightDeltas