interpolation-0.1: private/Numeric/Interpolation/Private/List.hs
module Numeric.Interpolation.Private.List where
import qualified Data.List as List
mapAdjacent3 :: (a -> a -> a -> b) -> [a] -> [b]
mapAdjacent3 f xs0 =
let xs1 = drop 1 xs0
xs2 = drop 1 xs1
in List.zipWith3 f xs0 xs1 xs2
mapAdjacentMaybe3 :: (Maybe a -> a -> Maybe a -> b) -> [a] -> [b]
mapAdjacentMaybe3 f xs =
let jxs = map Just xs
in zipWith3 f (Nothing : jxs) xs (drop 1 jxs ++ [Nothing])
mapAdjacentMaybe5 ::
(Maybe a -> Maybe a -> a -> Maybe a -> Maybe a -> b) ->
[a] -> [b]
mapAdjacentMaybe5 f xs =
let jxs = map Just xs
lxs1 = Nothing : jxs
lxs2 = Nothing : lxs1
rxs1 = drop 1 $ jxs ++ repeat Nothing
rxs2 = drop 1 $ rxs1
in List.zipWith5 f lxs2 lxs1 xs rxs1 rxs2