fgi_mod!{
fn vec_gen_range:(
Thk[0] 0 Nat -> 0 F Vec Nat
) = {
#n.
{unsafe (1) trapdoor::vec_gen_range}
n
}
fn vec_fold:(
Thk[0] forallt a:type.
0 Vec a -> 0 b ->
0 (Thk[0] 0 a -> 0 b -> 0 F b) ->
0 F b
) = {
#v.#b.#f.
{unsafe (3) trapdoor::vec_fold}
v b f
}
fn vec_fold_rev:(
Thk[0] forallt a:type.
0 Vec a -> 0 b ->
0 (Thk[0] 0 a -> 0 b -> 0 F b) ->
0 F b
) = {
#v.#b.#f.
{unsafe (3) trapdoor::vec_fold_rev}
v b f
}
fn vec_filter:(
Thk[0] forallt a:type.
0 Vec a ->
0 (Thk[0] 0 a -> 0 F Bool) ->
0 F Vec a
) = {
#v.#f.
{unsafe (2) trapdoor::vec_filter}
v f
}
fn vec_map:(
Thk[0] forallt (a,b):type.
0 Vec a ->
0 (Thk[0] 0 a -> 0 F b) ->
0 F Vec b
) = {
#v.#f.
{unsafe (2) trapdoor::vec_map}
v f
}
}
mod trapdoor {
use crate::dynamics::{RtVal,ExpTerm};
pub fn vec_gen_range(args:Vec<RtVal>) -> ExpTerm {
match (&args[0], &args[1]) {
_ => panic!("TODO")
}
}
pub fn vec_filter(args:Vec<RtVal>) -> ExpTerm {
match (&args[0], &args[1]) {
_ => panic!("TODO")
}
}
pub fn vec_map(args:Vec<RtVal>) -> ExpTerm {
match (&args[0], &args[1]) {
_ => panic!("TODO")
}
}
pub fn vec_fold(args:Vec<RtVal>) -> ExpTerm {
match (&args[0], &args[1], &args[2]) {
_ => panic!("TODO")
}
}
pub fn vec_fold_rev(args:Vec<RtVal>) -> ExpTerm {
match (&args[0], &args[1], &args[2]) {
_ => panic!("TODO")
}
}
}