Coroutines

This commit is contained in:
2026-02-07 22:15:07 +01:00
parent 4039394e42
commit 3c51b65be2
7 changed files with 524 additions and 67 deletions

View File

@ -1,19 +1,36 @@
use nanolog::ast::{Body, Module, Predicate};
use corosensei::Coroutine;
use nanolog::ast::Body;
use nanolog::ast::Module;
use nanolog::ast::Predicate;
fn main()
{
env_logger::builder()
.filter_level(log::LevelFilter::Info)
.format_timestamp(None)
.format_module_path(false)
.init();
//println!("{:#?}", Module::parse_from_file("1.pl"));
let module: Module = "
integer(zero).
integer(s(X)) :- integer(X).
add(X, zero, X).
add(X, s(Y), Z) :- add(s(X), Y, Z).
"
.into();
let a: Predicate = "zero".into();
let b: Predicate = "X".into();
// let a: Predicate = "integer(s(zero))".into();
// let b: Predicate = "integer(s(X))".into();
//
// println!("{:?}", a.unify(&b));
println!("{:?}", a.unify(&b));
let body: Body = "add(s(s(zero)), s(zero), s(s(s(zero))))".into();
let body: Body = "add(s(zero), s(zero), X).".into();
body.prove_in_module(&module).next().next();
// let body: Body = "integer(s(s(s(s(zer))))).".into();
// body.prove(&module);
// let body: Body = "integer(X).".into();
// body.prove_in_module(&module).next().next();
//println!("{}", module);
//
}