mirror of
https://github.com/github/semantic.git
synced 2024-12-22 14:21:31 +03:00
Endpoint fields are strict.
This commit is contained in:
parent
0624d24aa7
commit
6b696876ce
@ -21,7 +21,7 @@ data Snake = Snake { xy :: Endpoint, uv :: Endpoint }
|
|||||||
|
|
||||||
newtype EditDistance = EditDistance { unEditDistance :: Int }
|
newtype EditDistance = EditDistance { unEditDistance :: Int }
|
||||||
newtype Diagonal = Diagonal { unDiagonal :: Int }
|
newtype Diagonal = Diagonal { unDiagonal :: Int }
|
||||||
newtype Endpoint = Endpoint { unEndpoint :: (Int, Int) }
|
data Endpoint = Endpoint { x :: !Int, y :: !Int }
|
||||||
data Direction = Forward | Reverse
|
data Direction = Forward | Reverse
|
||||||
|
|
||||||
|
|
||||||
@ -29,9 +29,9 @@ decompose :: MyersF a -> Myers a
|
|||||||
decompose myers = case myers of
|
decompose myers = case myers of
|
||||||
SES {} -> return []
|
SES {} -> return []
|
||||||
|
|
||||||
MiddleSnake {} -> return (Snake (Endpoint (0, 0)) (Endpoint (0, 0)), EditDistance 0)
|
MiddleSnake {} -> return (Snake (Endpoint 0 0) (Endpoint 0 0), EditDistance 0)
|
||||||
|
|
||||||
FindDPath {} -> return (Endpoint (0, 0))
|
FindDPath {} -> return (Endpoint 0 0)
|
||||||
|
|
||||||
|
|
||||||
-- Implementation details
|
-- Implementation details
|
||||||
@ -47,10 +47,10 @@ getK direction diagonal = do
|
|||||||
at :: Vector.Vector Int -> Diagonal -> Myers Endpoint
|
at :: Vector.Vector Int -> Diagonal -> Myers Endpoint
|
||||||
at v (Diagonal k) = do
|
at v (Diagonal k) = do
|
||||||
Diagonal o <- gets offset
|
Diagonal o <- gets offset
|
||||||
return (Endpoint (v Vector.! o + k, 0))
|
return (Endpoint (v Vector.! o + k) 0)
|
||||||
|
|
||||||
overlaps :: Endpoint -> Endpoint -> Bool
|
overlaps :: Endpoint -> Endpoint -> Bool
|
||||||
overlaps (Endpoint (x, y)) (Endpoint (u, v)) = x - y == u - v && x <= u
|
overlaps (Endpoint x y) (Endpoint u v) = x - y == u - v && x <= u
|
||||||
|
|
||||||
|
|
||||||
-- Instances
|
-- Instances
|
||||||
|
Loading…
Reference in New Issue
Block a user