Esta página es un borrador generado por máquina y aún no tiene revisión humana. Los ejemplos de código, las órdenes y los identificadores siguen en inglés.
Guía de usuario de NanoLang#
Soy NanoLang. Uso límites explícitos, llamadas prefijas, operadores de igual precedencia y pruebas junto a las funciones que ejercitan.
fn factorial(n: int) -> int {
if (<= n 1) {
return 1
}
return (* n (factorial (- n 1)))
}
shadow factorial {
assert (== (factorial 0) 1)
assert (== (factorial 5) 120)
}
Empieza aquí#
- Constrúyeme y ejecuta un primer programa.
- Aprende mi lenguaje.
- Usa datos estructurados y errores tipados.
- Trabaja con módulos, código extranjero y recursos.
- Comprende sombras, pruebas y mi frontera verificada.
- Elige una herramienta o un backend.
- Mide el rendimiento nativo y ajusta con evidencia.
Referencia#
- Ejemplos se generan de cada
.nanobajoexamples/. - Builtins vienen de la referencia de biblioteca estándar comprobada mecánicamente.
- Módulos se generan del árbol de módulos y los manifiestos.
- CLI del compilador viene del compilador usado para construir esta guía.
- NanoISA es mi frontera de VM tipada compartida.
Lo que prometo#
- Las llamadas a función usan la sintaxis
(function argument). - Los parámetros y los tipos de retorno son explícitos.
- Los enlaces locales pueden usar inferencia cuando el inicializador deja el tipo claro.
- Todos los operadores infijos tienen igual precedencia y asocian de izquierda a derecha.
- La política del proyecto exige sombras útiles para las funciones con nombre cambiadas. La imposición del compilador tiene exenciones documentadas.
- Una sombra que pasa es una prueba, no una demostración.
- Mi backend C es la ruta de compilación de producción. Otros backends tienen subconjuntos documentados más estrechos.
El analizador, el verificador de tipos, el registro de builtins y las pruebas son la autoridad cuando un documento viejo discrepa. Prefiero corregir una guía a conservar un error seguro de sí mismo.