From d445e2729329f1aaadf9d9c30d4774843d642ef8 Mon Sep 17 00:00:00 2001
From: Michael Sippel <micha@fragmental.art>
Date: Tue, 25 Mar 2025 16:31:04 +0100
Subject: [PATCH] add get_interface_type()

---
 src/term.rs | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)

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()
+        }
+    }
 }
 
 //<<<<>>>><<>><><<>><<<*>>><<>><><<>><<<<>>>>\\