module Autolib.Util.Hamming where
hamming :: Eq a => [a] -> [a] -> Int
hamming :: forall a. Eq a => [a] -> [a] -> Int
hamming = (a -> a -> Bool) -> [a] -> [a] -> Int
forall a. (a -> a -> Bool) -> [a] -> [a] -> Int
hammingBy a -> a -> Bool
forall a. Eq a => a -> a -> Bool
(==)
hammingBy :: (a -> a -> Bool) -> [a] -> [a] -> Int
hammingBy :: forall a. (a -> a -> Bool) -> [a] -> [a] -> Int
hammingBy a -> a -> Bool
eq [a]
xs = [Bool] -> Int
forall a. [a] -> Int
forall (t :: * -> *) a. Foldable t => t a -> Int
length ([Bool] -> Int) -> ([a] -> [Bool]) -> [a] -> Int
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Bool -> Bool) -> [Bool] -> [Bool]
forall a. (a -> Bool) -> [a] -> [a]
filter Bool -> Bool
not ([Bool] -> [Bool]) -> ([a] -> [Bool]) -> [a] -> [Bool]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (a -> a -> Bool) -> [a] -> [a] -> [Bool]
forall a b c. (a -> b -> c) -> [a] -> [b] -> [c]
zipWith a -> a -> Bool
eq [a]
xs