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