lambdust 0.1.1

A Scheme dialect with gradual typing and effect systems
use super::{ModuleId, ModuleMetadata};
use crate::eval::Value;
use std::collections::HashMap;
use std::path::PathBuf;

/// A loaded and compiled module ready for use.
#[derive(Debug, Clone)]
pub struct Module {
    /// Unique identifier for this module
    pub id: ModuleId,
    /// Exported symbols and their values
    pub exports: HashMap<String, Value>,
    /// Dependencies that this module imports
    pub dependencies: Vec<ModuleId>,
    /// Optional source location for debugging
    pub source: Option<ModuleSource>,
    /// Module metadata
    pub metadata: ModuleMetadata,
}

/// Source information for a module.
#[derive(Debug, Clone)]
pub enum ModuleSource {
    /// Built-in module (no source file)
    Builtin,
    /// Module loaded from a file
    File(PathBuf),
    /// Module compiled from source code
    Source(String),
}