prim syntax → builtin

This commit is contained in:
2026-09-21 05:01:20 -06:00
parent 94ab42007a
commit f143df400a
3 changed files with 6 additions and 11 deletions
+2 -2
View File
@@ -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})))
|] |]
+1 -6
View File
@@ -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"
+3 -3
View File
@@ -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