-- we need to end up. Especially of note is that we do not yet parse any
-- sort of pragmas for augmenting our disposition list.
--
--- XXX The handling for "is/2" is probably wrong, but differently wrong than
+-- XXX The handling for \"is/2\" is probably wrong, but differently wrong than
-- before, at least.
--
-- XXX We really should do some CSE/GVN somewhere right after this pass, but
-- against this.
--
-
-- Header material {{{
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE FlexibleInstances #-}
module Dyna.Analysis.ANF (
ANFState(..), Rule(..),
- normTerm, normRule, runNormalize, printANF
+ normTerm, normRule, runNormalize, printANF,
+
+ -- * Internals
+ SelfDispos(..), ArgDispos(..), ECSrc(..), EvalCtx,
) where
import Control.Monad.Reader
-- | Check that two dvars are not equal. This is used to
-- prevent double-counting of hyper-edges when any of their
-- tails can be made to be the same item by specialization.
- --
- -- XXX While inspired by Blatz & Eisner 2006, it's unclear
- -- that this is actually what we should be doing. Oh well,
- -- live and learn.
+ --
+ -- XXX While inspired by (Eisner, Goldlust, and Smith 2005),
+ -- it's unclear that this is actually what we should be doing.
+ -- Oh well, live and learn.
| OPCkne DVar DVar -- ++
-- | Check that the input dvar is an interned representation
--
-- * We might want to use T.T.Literate, too, in the end.
--
--- * Doesn't understand dynabase literals ("{ ... }")
+-- * Doesn't understand dynabase literals (\"{ ... }\")
--
-- * Doesn't handle parenthesized aggregators
--
--- * Doesn't handle shared subgoals ("whenever ... { ... }")
+-- * Doesn't handle shared subgoals (\"whenever ... { ... }\")
--
-- * Doesn't understand nullary star for gensym correctly
-- (it's a available in term context but not texpr context;