Skip to main content

sim_value/
kind.rs

1//! The one `Expr` variant classifier.
2
3use sim_kernel::Expr;
4
5/// A short, stable token naming the `Expr` variant.
6pub fn expr_kind(value: &Expr) -> &'static str {
7    match value {
8        Expr::Nil => "nil",
9        Expr::Bool(_) => "bool",
10        Expr::Number(_) => "number",
11        Expr::Symbol(_) => "symbol",
12        Expr::Local(_) => "local",
13        Expr::String(_) => "string",
14        Expr::Bytes(_) => "bytes",
15        Expr::List(_) => "list",
16        Expr::Vector(_) => "vector",
17        Expr::Map(_) => "map",
18        Expr::Set(_) => "set",
19        Expr::Call { .. } => "call",
20        Expr::Infix { .. } => "infix",
21        Expr::Prefix { .. } => "prefix",
22        Expr::Postfix { .. } => "postfix",
23        Expr::Block(_) => "block",
24        Expr::Quote { .. } => "quote",
25        Expr::Annotated { .. } => "annotated",
26        Expr::Extension { .. } => "extension",
27    }
28}