//! A program as parsed by our grammar.
//!
//! In reality all programs are turned into a single expression after inlining functions, so this
//! is only a compile-time construct for now. Eventually, it may make more sense to pass around
//! programs through the compiler rather than just expressions, so we can store more information
//! about the expression (e.g., debug info about type aliases and macros)
use Vec;
use crate;
/// A type alias we will substitute at compile time.
/// A macro we will substitute at compile time.