diff --git a/src/main.rs b/src/main.rs index e1262e1..5ddb94e 100644 --- a/src/main.rs +++ b/src/main.rs @@ -96,9 +96,31 @@ struct LdmcPrimCMorphism { fn encode_type_to_symbol(dict: &mut impl TypeDict, t: &laddertypes::TypeTerm)-> String { match t { laddertypes::TypeTerm::Char(c) => { - format!("{}", (*c as u64)) + match c { + '.' => format!("_dot_"), + _ => + format!("{}", (*c as u64)) + } }, - t => dict.unparse(t) + laddertypes::TypeTerm::Num(n) => { + format!("{}", n) + } + laddertypes::TypeTerm::TypeID(ty_id) => { + if let Some(name) = dict.get_typename(ty_id) { + format!("{}", name.replace(".", "_dot_")) + } else { + format!("") + } + } + laddertypes::TypeTerm::Ladder(rs) | + laddertypes::TypeTerm::App(rs) => { + let mut s = String::new(); + for r in rs { + s.push('_'); + s.push_str(&encode_type_to_symbol(dict, r)); + } + s + } } }