oxilean_codegen/lcnf/
lcnftype_traits.rs1use super::types::LcnfType;
12use std::fmt;
13
14impl fmt::Display for LcnfType {
15 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
16 match self {
17 LcnfType::Erased => write!(f, "erased"),
18 LcnfType::Var(name) => write!(f, "{}", name),
19 LcnfType::Fun(params, ret) => {
20 write!(f, "(")?;
21 for (i, p) in params.iter().enumerate() {
22 if i > 0 {
23 write!(f, ", ")?;
24 }
25 write!(f, "{}", p)?;
26 }
27 write!(f, ") -> {}", ret)
28 }
29 LcnfType::Ctor(name, args) => {
30 write!(f, "{}", name)?;
31 if !args.is_empty() {
32 write!(f, "<")?;
33 for (i, a) in args.iter().enumerate() {
34 if i > 0 {
35 write!(f, ", ")?;
36 }
37 write!(f, "{}", a)?;
38 }
39 write!(f, ">")?;
40 }
41 Ok(())
42 }
43 LcnfType::Object => write!(f, "object"),
44 LcnfType::Nat => write!(f, "nat"),
45 LcnfType::LcnfString => write!(f, "string"),
46 LcnfType::Unit => write!(f, "unit"),
47 LcnfType::Irrelevant => write!(f, "irrelevant"),
48 }
49 }
50}