[Fencommits] fenserve: add renderExp' line for Call potions
Benja Fallenstein
benja.fallenstein at gmail.com
Thu Jun 14 01:11:04 EEST 2007
Wed Jun 13 23:33:24 EEST 2007 Benja Fallenstein <benja.fallenstein at gmail.com>
* add renderExp' line for Call potions
diff -rN -u old-fenserve/fendata/Rendering.hs new-fenserve/fendata/Rendering.hs
--- old-fenserve/fendata/Rendering.hs 2007-06-14 01:11:04.000000000 +0300
+++ new-fenserve/fendata/Rendering.hs 2007-06-14 01:11:04.000000000 +0300
@@ -58,14 +58,14 @@
varType :: (?db :: DB) => Int -> RenderExp ()
varType i = ask >>= return . toHTML . renderType . snd . (!! i) >>= tell
-varName :: (?db :: DB) => Int -> RenderExp ()
+varName :: (?db :: DB, ?funs :: Map FunId Fun) => Int -> RenderExp ()
varName i = fmap (!! i) ask >>= \(name,_) -> ren ("'", ital name, "'")
mintVar :: Type -> (Int -> RenderExp a) -> RenderExp a
mintVar t f = do var <- get; put (var + 1); local (("v"++show var,t):) (f var)
-class RenderOne a where renderOne :: (?db :: DB) => a -> RenderExp ()
+class RenderOne a where renderOne :: (?db :: DB, ?funs :: Map FunId Fun) => a -> RenderExp ()
instance RenderOne (RenderExp a) where renderOne m = m >> return ()
instance RenderOne Type where renderOne = renderOne . renderType
@@ -73,16 +73,19 @@
instance RenderOne (Cx CxExp) where renderOne (Cx (e,cx)) = renderExp' e
instance ToHTML a => RenderOne a where renderOne x = tell (toHTML x)
-class Ren a where ren :: (?db :: DB) => a -> RenderExp ()
+class Ren a where ren :: (?db :: DB, ?funs :: Map FunId Fun) => a -> RenderExp ()
instance Ren () where ren () = return ()
instance (RenderOne x, Ren xs, Tuple x xs t) => Ren t where
ren t | (x,xs) <- tsplit1 t = renderOne x >> ren xs
-renderExp' :: (?db :: DB) => CxExp -> RenderExp ()
+renderExp' :: (?db :: DB, ?funs :: Map FunId Fun) => CxExp -> RenderExp ()
renderExp' (Var i) = ren ( varType i, " ", varName i )
---renderExp' (Call fun exps) =
+renderExp' (Call fun exps) = f template exps where
+ f (TCons h x xs) (e:es) = ren (h, e, f xs es)
+ f (TNil h) [] = ren (I h)
+ Fun template _ body = ?funs Map.! fun
renderExp' (Literal vals) = ren ( I vals )
renderExp' (GetField field exp) = ren
( "the ", fieldName $ getField field, " of ", exp )
More information about the Fencommits
mailing list