Lispex is an input‑only surface that transforms to many targets. Side‑effects depend on the runtime you target. This page outlines how to think about capabilities (IO/FS/Net) today.
Concept
- Capabilities name effect categories: IO (console/stdio), FS (files/paths), Net (HTTP/sockets).
- Lispex itself does not ship a runtime. Capability usage ultimately maps to target‑language APIs.
- Guides avoid module headers/imports to keep examples portable; use the target’s standard library after transformation.
What’s stable now
- Pure, side‑effect‑free code transforms consistently across targets.
- Printing results: some targets auto‑print the last expression, others require explicit print/log on the target side.
Constraints & limitations (current)
- No cross‑target “standard” IO/FS/Net layer is guaranteed yet.
- Path/encoding/timezone/permissions differ by OS/target; prefer UTF‑8, absolute paths only when necessary, and handle errors.
- Network calls (HTTP, sockets) require the target’s libraries and policies (CORS, TLS, proxies).
Safety & permissions
- Be explicit about where data comes from and where it goes (input validation, output encoding).
- Respect sandboxing (browsers), UAC/ACL (desktop), and runtime flags (Node/deno/python).
Practical approach today
- Transform Lispex to your target.
- In the target, wire IO/FS/Net using its standard libraries or frameworks.
- Keep Lispex code pure where possible; pass values into small effectful wrappers on the target side.
Open LENA code: www.lenacode.com