Skip to content

Commit

Permalink
Merge branch 'main' into stack-ghc-9.6
Browse files Browse the repository at this point in the history
  • Loading branch information
Gabriella439 authored Jun 12, 2024
2 parents c6d09e3 + 402fedc commit 0ee0299
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 8 deletions.
12 changes: 8 additions & 4 deletions dhall/src/Dhall/Eval.hs
Original file line number Diff line number Diff line change
Expand Up @@ -122,7 +122,7 @@ instance Semigroup (VChunks a) where
VChunks xys z <> VChunks [] z' = VChunks xys (z <> z')
VChunks xys z <> VChunks ((x', y'):xys') z' = VChunks (xys ++ (z <> x', y'):xys') z'

instance Monoid (VChunks b) where
instance Monoid (VChunks a) where
mempty = VChunks [] mempty

{-| Some information is lost when `eval` converts a `Lam` or a built-in function
Expand Down Expand Up @@ -527,9 +527,13 @@ eval !env t0 =
-- following issue:
--
-- https://github.com/ghcjs/ghcjs/issues/782
let go !acc 0 = acc
go acc m = go (vApp succ acc) (m - 1)
in go zero (fromIntegral n' :: Integer)
go zero (fromIntegral n' :: Integer) where
go !acc 0 = acc
go (VNaturalLit x) m =
case vApp succ (VNaturalLit x) of
VNaturalLit y | x == y -> VNaturalLit x
notNaturalLit -> go notNaturalLit (m - 1)
go acc m = go (vApp succ acc) (m - 1)
_ -> inert
NaturalBuild ->
VPrim $ \case
Expand Down
4 changes: 2 additions & 2 deletions dhall/src/Dhall/Map.hs
Original file line number Diff line number Diff line change
Expand Up @@ -623,8 +623,8 @@ traverseWithKey
:: Ord k => Applicative f => (k -> a -> f b) -> Map k a -> f (Map k b)
traverseWithKey f (Map m Sorted) =
fmap (\m' -> Map m' Sorted) (Data.Map.traverseWithKey f m)
traverseWithKey f m =
fmap fromList (traverse f' (toList m))
traverseWithKey f m@(Map _ ks) =
flip Map ks . Data.Map.fromList <$> traverse f' (toList m)
where
f' (k, a) = fmap ((,) k) (f k a)
{-# INLINABLE traverseWithKey #-}
Expand Down
12 changes: 10 additions & 2 deletions dhall/src/Dhall/Normalize.hs
Original file line number Diff line number Diff line change
Expand Up @@ -211,8 +211,16 @@ normalizeWithM ctx e0 = loop (Syntax.denote e0)
strict = strictLoop (fromIntegral n0 :: Integer)
lazy = loop ( lazyLoop (fromIntegral n0 :: Integer))

strictLoop 0 = loop zero
strictLoop !n = App succ' <$> strictLoop (n - 1) >>= loop
strictLoop !n = do
z <- loop zero
strictLoopShortcut n z

strictLoopShortcut 0 !previous = pure previous
strictLoopShortcut !n !previous = do
current <- loop (App succ' previous)
if judgmentallyEqual previous current
then pure previous
else strictLoopShortcut (n - 1) current

lazyLoop 0 = zero
lazyLoop !n = App succ' (lazyLoop (n - 1))
Expand Down

0 comments on commit 0ee0299

Please sign in to comment.