Opus es un dialecto Lisp de ámbito estático y núcleo mínimo, implementado en Haskell y compilado a WebAssembly. Su diseño se apoya en la semántica de las f-expressions del lenguaje Kernel (desarrollado por John Shutt) y emplea estilo de paso de continuaciones (CPS) para el control de flujo.
El objetivo principal del proyecto es reducir la base computacional de confianza del lenguaje —los Special Forms— y trasladar a código de usuario la responsabilidad de implementar módulos higiénicos, control de flujo y entornos aislados. Para ello, Opus unifica en un único primitivo, el operative ($vau), las tradicionales funciones y macros de Lisp, y trata los entornos como valores ejecutables de primera clase. La función eval clásica queda reemplazada, en la práctica, por la aplicación de un entorno a un árbol de sintaxis abstracta (AST).
Este enfoque permite derivar las construcciones habituales de Lisp desde primeros principios: una $lambda es simplemente un operative "envuelto" que evalúa sus argumentos antes de ejecutarse, y una macro es un operative que invoca al evaluador al final de su cuerpo. Del mismo modo, los módulos higiénicos, el reexportado selectivo de símbolos y los entornos de sólo lectura (sandboxes) se implementan enteramente en espacio de usuario, sin necesidad de soporte especial en el intérprete.
Al estar construido sobre un intérprete CPS (ContT), Opus soporta de forma nativa llamadas en cola proper y continuaciones de primera clase, lo que facilita la captura y reanudación de flujos de control desde el REPL. El repositorio incluye instrucciones de compilación mediante cabal y Nix, y requiere el toolchain wasm32-wasi-ghc para generar el binario WebAssembly. El código fuente está disponible en GitHub bajo el repositorio yaoshiu/opus.
