xo-jit: example: + reqd type arg to Variable in ex1.cpp

This commit is contained in:
Roland Conybeare 2024-06-19 10:54:06 -04:00
commit d43ac46eab

View file

@ -41,6 +41,7 @@ main() {
using xo::ast::make_apply; using xo::ast::make_apply;
using xo::ast::make_var; using xo::ast::make_var;
using xo::ast::make_lambda; using xo::ast::make_lambda;
using xo::reflect::Reflect;
using xo::xtag; using xo::xtag;
using std::cerr; using std::cerr;
using std::endl; using std::endl;
@ -128,13 +129,13 @@ main() {
auto sin = make_primitive("sin", ::sin); auto sin = make_primitive("sin", ::sin);
auto cos = make_primitive("cos", ::cos); auto cos = make_primitive("cos", ::cos);
auto x_var = make_var("x"); auto x_var = make_var("x", Reflect::require<double>());
auto call1 = make_apply(cos, {x_var}); /* (cos x) */ auto call1 = make_apply(cos, {x_var}); /* (cos x) */
auto call2 = make_apply(sin, {call1}); /* (sin (cos x)) */ auto call2 = make_apply(sin, {call1}); /* (sin (cos x)) */
/* (define (lm_1 x) (sin (cos x))) */ /* (define (lm_1 x) (sin (cos x))) */
auto lambda = make_lambda("lm_1", auto lambda = make_lambda("lm_1",
{"x"}, {x_var},
call2); call2);
log && log(xtag("expr", lambda)); log && log(xtag("expr", lambda));