Strictness without ordering, or confusion

From HaskellWiki
Revision as of 01:21, 7 January 2019 by Atravers (talk | contribs) (Created page with "Category:Proposals As the Haskell 2010 Report does not specify any order of evaluation with respect to its parameters, the name of the primitive <code>seq :: a -> b -> b...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.


As the Haskell 2010 Report does not specify any order of evaluation with respect to its parameters, the name of the primitive seq :: a -> b -> b is a misnomer.

Introduce the primitive amid, with the same (Haskell 2010 Report) requirements:

         infixr 0 `amid`
         primtive amid :: a -> b -> b

         infixr 0 $!
         ($!) :: (a -> b) -> a -> b
         f $! x =  x `amid` f x


This frees the name "seq" for use with a new primitive, analogous to the GHC primitive pseq, but not restricted to parallel programming.

If needed, "amidst" is one alternate basename for the deepseq library and its definitions.

Atravers 01:17, 7 January 2019 (UTC)