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