///////////////;;;;;;;,,,,,,....~~~...,,;;;////////////////// // This stuff is commented out: // // Fungi modules are not on the critical path right now. /// ///////////////;;;;;;;,,,,,,......~~~.,,;;;////////////////// // #![recursion_limit="128"] // #[macro_use] // extern crate fungi_lang; // use fungi_lang::ast::*; // use std::rc::Rc; // use fungi_lang::stdlib::{vec,seq}; // use fungi_lang::stdlib::seq::seq_nat; // fgi_inner_mod!{ // pub (nums) // /// Len type // type Len = ( Nat ); // /// Cnt type // type Cnt = ( Nat ); // /// smallest number // val zero : ( Len ) = ( 0 ); // /// almost smallest number // val one : ( Len ) = ( 1 ); // /// one + one // val two : ( Len ) = ( 2 );;;;;; // } // fn fgi_module_test () -> Module { // fgi_module!{ // // import modules defined in fungi_lang::stdlib // use vec::*; // // import nums module, defined above // use nums::*; // /// now, we can use anything in either module, as if they were // /// defined here: // val test_nums_vec : (Thk[0] 0 F (Nat x Vec Nat)) = ( // thunk { // let x = {one + two} // let v = {{force vec_gen_range} x} // ret (x, v) // } // ) // } // } // #[test] // fn module () { // use std::thread; // let child = // thread::Builder::new().stack_size(64 * 1024 * 1024).spawn(move || { // module2() // }); // let _ = child.unwrap().join(); // } // fn module2() { // use fungi_lang::bitype::*; // use fungi_lang::vis::*; // //let m : Rc = Rc::new(fgi_module_test()); // //let md : bitype::ModuleDer = bitype::synth_module(None, &m); // let bundle : Bundle = fgi_bundle![ // use seq_nat::*; // ret 123 // ]; // write_bundle("target/mod.fgb", &bundle); // }