1-- |
2-- Module      : Foundation.Strict
3-- License     : BSD-style
4-- Maintainer  : Foundation
5-- Stability   : stable
6-- Portability : portable
7--
8-- Enforce strictness when executing lambda
9--
10
11module Foundation.Strict
12    ( strict1
13    , strict2
14    , strict3
15    , strict4
16    , strict5
17    , strict6
18    ) where
19
20strict1 :: (a -> b) -> a -> b
21strict1 f !a = f a
22
23strict2 :: (a -> b -> c) -> a -> b -> c
24strict2 f !a !b = f a b
25
26strict3 :: (a -> b -> c -> d) -> a -> b -> c -> d
27strict3 f !a !b !c = f a b c
28
29strict4 :: (a -> b -> c -> d -> e) -> a -> b -> c -> d -> e
30strict4 f !a !b !c !d = f a b c d
31
32strict5 :: (a -> b -> c -> d -> e -> f) -> a -> b -> c -> d -> e -> f
33strict5 f !a !b !c !d !e = f a b c d e
34
35strict6 :: (a -> b -> c -> d -> e -> f -> g) -> a -> b -> c -> d -> e -> f -> g
36strict6 f !a !b !c !d !e !g = f a b c d e g
37
38