bugfix: xo-jit: track expanded lambda api
This commit is contained in:
parent
eb2d627f85
commit
d74e56bc74
3 changed files with 16 additions and 9 deletions
|
|
@ -167,7 +167,8 @@ main() {
|
|||
/* (define (lm_1 x) (sin (cos x))) */
|
||||
auto lambda = make_lambda("lm_1",
|
||||
{x_var},
|
||||
call2);
|
||||
call2,
|
||||
nullptr /*parent_env*/);
|
||||
|
||||
log && log(xtag("expr", lambda));
|
||||
|
||||
|
|
|
|||
|
|
@ -109,7 +109,8 @@ main() {
|
|||
|
||||
auto lambda = make_lambda("callit",
|
||||
{f_var, x_var},
|
||||
call1);
|
||||
call1,
|
||||
nullptr /*parent_env*/);
|
||||
#elif CHOICE == 1
|
||||
#define FUNCTION_SYMBOL "root4"
|
||||
/* def root4(x : double) { sqrt(sqrt(x)) } */
|
||||
|
|
@ -120,7 +121,8 @@ main() {
|
|||
|
||||
auto lambda = make_lambda("root4",
|
||||
{x_var},
|
||||
call2);
|
||||
call2,
|
||||
nullptr /*parent_env*/);
|
||||
#elif CHOICE == 2
|
||||
#define FUNCTION_SYMBOL "twice"
|
||||
auto root = make_primitive("sqrt",
|
||||
|
|
@ -137,7 +139,8 @@ main() {
|
|||
/* (define (twice f ::int->int x ::int) (f (f x))) */
|
||||
auto lambda = make_lambda("twice",
|
||||
{f_var, x_var},
|
||||
call2);
|
||||
call2,
|
||||
nullptr /*parent_env*/);
|
||||
#endif
|
||||
|
||||
log && log(xtag("lambda", lambda));
|
||||
|
|
|
|||
|
|
@ -19,7 +19,6 @@ namespace xo {
|
|||
using xo::ast::exprtype;
|
||||
using xo::reflect::Reflect;
|
||||
using xo::reflect::reflect_struct;
|
||||
using xo::ref::rp;
|
||||
using xo::ref::brw;
|
||||
using std::cerr;
|
||||
using std::endl;
|
||||
|
|
@ -41,7 +40,8 @@ namespace xo {
|
|||
|
||||
auto fn_ast = make_lambda("root4",
|
||||
{x_var},
|
||||
call2);
|
||||
call2,
|
||||
nullptr /*parent_env*/);
|
||||
|
||||
return fn_ast;
|
||||
}
|
||||
|
|
@ -65,7 +65,8 @@ namespace xo {
|
|||
/* def twice(f :: double->double, x :: double) { f(f(x)); } */
|
||||
auto twice = make_lambda("twice",
|
||||
{f_var, x_var},
|
||||
call2);
|
||||
call2,
|
||||
nullptr /*parent_env*/);
|
||||
|
||||
auto x2_var = make_var("x2", Reflect::require<double>());
|
||||
auto call3 = make_apply(twice, {root, x2_var});
|
||||
|
|
@ -77,7 +78,8 @@ namespace xo {
|
|||
*/
|
||||
auto fn_ast = make_lambda("root_2x",
|
||||
{x2_var},
|
||||
call3);
|
||||
call3,
|
||||
nullptr /*parent_env*/);
|
||||
|
||||
return fn_ast;
|
||||
}
|
||||
|
|
@ -270,7 +272,8 @@ namespace xo {
|
|||
|
||||
auto make_ratio = make_lambda("make_ratio",
|
||||
{n_var, d_var},
|
||||
call1);
|
||||
call1,
|
||||
nullptr /*parent_env*/);
|
||||
|
||||
return make_ratio;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue