Add knightDeltas.hs

This commit is contained in:
Ivan Malison 2018-03-23 21:25:09 -07:00
parent db2ad6f48d
commit af1b2b877b
No known key found for this signature in database
GPG Key ID: 62530EFBE99DC2F8

View File

@ -0,0 +1,22 @@
#!/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