-- 
-- (c) Susumu Katayama
--
{-# LANGUAGE TemplateHaskell #-}
module MagicHaskeller.Combinators where
import MagicHaskeller.ExprStaged
import Language.Haskell.TH
import Debug.Trace
finiteHVss :: [[a]]
finiteHVss = $(do dss <- mapM (\lenavails -> mapM (\arity -> hdmnTHEQ arity lenavails) [0..maxArity]) [0..maxLenavails]
                  return $ ListE $ map ListE dss)
finiteHVsss :: [[[a]]]
finiteHVsss = $(do dsss <- mapM (\debindex -> mapM (\lenavails -> mapM (\arity -> aimnTHEQ debindex arity lenavails) [0..maxArity]) [debindex+1..maxLenavails]) [0..maxDebindex]
                    -- trace (pprint $ ListE $ map (ListE . map ListE) dsss) $
                   return $ ListE $ map (ListE . map ListE) dsss)