diff --git a/src/term.rs b/src/term.rs index 4326d67..1cbd73a 100644 --- a/src/term.rs +++ b/src/term.rs @@ -132,6 +132,24 @@ impl TypeTerm { atom => atom } } + + + + pub fn get_interface_type(&self) -> TypeTerm { + match self { + TypeTerm::Ladder(rungs) => { + if let Some(top) = rungs.first() { + top.get_interface_type() + } else { + TypeTerm::unit() + } + } + TypeTerm::App(args) => { + TypeTerm::App(args.iter().map(|a| a.get_interface_type()).collect()) + } + atom => atom.clone() + } + } } //<<<<>>>><<>><><<>><<<*>>><<>><><<>><<<<>>>>\\