diff --git a/src/formula/mod.rs b/src/formula/mod.rs index b0d4024..bd2281c 100644 --- a/src/formula/mod.rs +++ b/src/formula/mod.rs @@ -3,7 +3,7 @@ use crate::formula::node::Node; pub mod node; pub struct Formula { - root: node::Node, + root: node::Node, } impl Formula { diff --git a/src/formula/node/function.rs b/src/formula/node/function.rs new file mode 100644 index 0000000..f8ba181 --- /dev/null +++ b/src/formula/node/function.rs @@ -0,0 +1,3 @@ +pub trait Function { + fn map(x: f64) -> f64; +} diff --git a/src/formula/node/mod.rs b/src/formula/node/mod.rs index 90c22b9..6e53a7a 100644 --- a/src/formula/node/mod.rs +++ b/src/formula/node/mod.rs @@ -1,16 +1,27 @@ use crate::formula::node::graph_constructor::GraphBuilder; +mod function; mod graph_constructor; pub struct Node { children: Vec, + function: fn(Vec) -> f64, } impl Node { pub fn empty() -> Self { - Node { children: vec![] } + Node { + children: vec![], + function: |_| 0f64, + } } pub fn build() -> GraphBuilder { GraphBuilder } + pub fn get_value(&self) -> f64 { + if self.children.len() == 0 { + 0f64 + } + for node in self.children {} + } }