-- SPDX-FileCopyrightText: 2026 Alexandra de Wit
--
-- SPDX-License-Identifier: MIT

-- | Evaluation for containers a long-lived result retains, so the result holds no deferred work.
module Ecluse.Core.Strict (strictElements) where

-- | Evaluate every element to weak head normal form when the container is evaluated.
strictElements :: (Foldable t) => t a -> t a
strictElements :: forall (t :: * -> *) a. Foldable t => t a -> t a
strictElements t a
elements = (a -> t a -> t a) -> t a -> t a -> t a
forall a b. (a -> b -> b) -> b -> t a -> b
forall (t :: * -> *) a b.
Foldable t =>
(a -> b -> b) -> b -> t a -> b
foldr a -> t a -> t a
forall a b. a -> b -> b
seq t a
elements t a
elements