prim syntax → builtin
This commit is contained in:
@@ -18,7 +18,7 @@ genCodeName f = gensym' @Name $ f ^. _Wrapped' . to (<> "-code")
|
||||
|
||||
bindEnv :: List Name -> Exp -> Exp
|
||||
bindEnv frees m = [cps|
|
||||
(prim (get-env) (κ #{frees} #{m}))
|
||||
(builtin (get-env) (κ #{frees} #{m}))
|
||||
|]
|
||||
|
||||
close1 :: forall es. GenSym :> es => Exp -> Eff es Exp
|
||||
@@ -41,7 +41,7 @@ close1 = \case
|
||||
let codes = bs' ^.. each . _1 . to MkLabel
|
||||
pure [cps|
|
||||
(letrec #{bs'}
|
||||
(prim (make-shared-closure #{codes} #{frees})
|
||||
(builtin (make-shared-closure #{codes} #{frees})
|
||||
(κ #{boundNames}
|
||||
#{e})))
|
||||
|]
|
||||
|
||||
@@ -49,15 +49,10 @@ convert (Scm.ExpLit l) k = k . one . ValImm $ case l of
|
||||
convert (Scm.ExpBuiltin p) k =
|
||||
telescope (convert1 @es) p \p' -> do
|
||||
r_l <- gensym' "r"
|
||||
-- k_l <- gensym' @Name "prim-k"
|
||||
m <- k [ValVar r_l]
|
||||
pure [cps|
|
||||
(prim #{p'} (κ (#{r_l}) #{m}))
|
||||
(builtin #{p'} (κ (#{r_l}) #{m}))
|
||||
|]
|
||||
-- pure [cps|
|
||||
-- (letrec ((#{k_l} (κ (#{r_l}) #{m})))
|
||||
-- (prim #{p'} #{k_l}))
|
||||
-- |]
|
||||
|
||||
convert (Scm.ExpLambda xs e) k = do
|
||||
f <- gensym' "lambda-body"
|
||||
|
||||
@@ -335,7 +335,7 @@ instance S.DatumIso Abs where
|
||||
|
||||
instance S.DatumIso Exp where
|
||||
datumIso = S.match
|
||||
$ S.With (. prim)
|
||||
$ S.With (. builtin)
|
||||
$ S.With (. letrec)
|
||||
$ S.With (. continue)
|
||||
$ S.With (. if_)
|
||||
@@ -365,8 +365,8 @@ instance S.DatumIso Exp where
|
||||
>>> S.el (S.datumIso @Kexp)
|
||||
>>> S.rest (S.datumIso @Val)
|
||||
>>> S.onTail S.swap
|
||||
prim = S.list $
|
||||
S.el (S.decorate S.SynBuiltin >>> S.sym "prim")
|
||||
builtin = S.list $
|
||||
S.el (S.decorate S.SynBuiltin >>> S.sym "builtin")
|
||||
>>> S.el (builtinDatumIso id (S.datumIso @Val))
|
||||
>>> S.el S.datumIso
|
||||
|
||||
|
||||
Reference in New Issue
Block a user