// 16-modulos.fitz — capítulo 16 de la guía.
//
// Carga `guide_utils.fitz` (en el mismo directorio) de dos formas:
//  - `import guide_utils` expone el módulo entero como namespace,
//    accesible vía `guide_utils.greet(...)`.
//  - `from guide_utils import User` trae el tipo `User` al scope
//    para poder usar la sintaxis de struct literal:
//    `User { id: ..., name: ... }`.
//
// Para correrlo:
//   cargo run -- run examples/guide/16-modulos.fitz

import guide_utils
from guide_utils import User

let u = User { id: 7, name: "Fitz" }
print(guide_utils.greet(u.name))
print(u)

// Default importado: `User {}` aplica los defaults `id = 0` y
// `name = DEFAULT_NAME` definidos en guide_utils — incluso aunque
// `DEFAULT_NAME` no se importe acá.
let anon = User {}
print(anon)

// Alias en imports: `import foo as f`, `from foo import bar as b`.
// El alias es local; el módulo se carga con su path real.
import guide_utils as gu
from guide_utils import greet as saludar
print(saludar("Patagonia"))
print(gu.PREFIX)
