Haskell en Maguyva: grafos de código para clases de tipos y módulos
Los tipos de Haskell dicen mucho. El grafo muestra quién depende de ellos.
Extensiones
.hs, .lhs
Maguyva admite Elixir con AST, símbolos y grafo, para que los agentes de IA sigan módulos, behaviours, protocolos y structs en código Phoenix y OTP.
Casi todo en Elixir es una llamada a macro. defmodule, def, use, alias y @impl se analizan como llamadas, y use GenServer trae comportamiento que nunca aparece en el archivo. Una herramienta que solo ve la sintaxis de llamada no distingue una definición de una dependencia, ni un callback de GenServer de un helper.
Maguyva convierte esas macros en relaciones, para que un agente vea qué módulos implementan un behaviour y quién llama a una función de contexto.
Maguyva cubre archivos .ex y .exs. Las macros de Elixir se convierten en relaciones:
alias, import y require registran importaciones.use registra una importación. Para behaviours de OTP y de frameworks como GenServer, Supervisor, Agent, Task, Phoenix.Controller, Phoenix.LiveView y Ecto.Schema, también registra que el módulo implementa ese behaviour.@behaviour y los bloques defimpl registran la implementación de un behaviour o protocolo.@doc, @spec, @impl y @callback se registran como anotaciones de la función que sigue. Los atributos de valor como @timeout 5_000 no.%User{} cuentan como instanciación, raise registra un throw, y rescue y catch registran un catch.Las macros del lenguaje como def, defp, defmodule, case y with se filtran de las llamadas, así que el grafo de llamadas muestra tus funciones.
Accounts.register_user y desde qué controladores?” (find_symbol, luego dependency_search incoming)GenServer?” (dependency_search)get_task_context)def, defmodule, alias y import son nodos de llamada en la gramática, así que en structural_search solo el preset functions devuelve resultados, y solo para funciones fn anónimas. Usa find_symbol para funciones y módulos con nombre.IO.puts, String.*, Enum.take y Process.*, se filtran de las relaciones. Usa text_pattern_search para encontrarlas.Conecta un repositorio con el inicio rápido y luego revisa la matriz de compatibilidad en la página de compatibilidad. Para otras bases de código funcionales, lee la guía de Haskell.
Mejor uso
Flujos de trabajo del agente
Detalles del motor
Puntos de entrada MCP útiles
Úsalo para una función de contexto o un módulo cuando necesites la definición y los llamadores; los presets estructurales no seleccionan las formas `def` con nombre.
Usa el recorrido incoming sobre un behaviour o protocolo para ver qué módulos lo implementan.
Úsalo para prompts como "rastrea una petición de pago desde el controlador hasta la base de datos".
Guías relacionadas
Los tipos de Haskell dicen mucho. El grafo muestra quién depende de ellos.
Extensiones
.hs, .lhs
Ruby se lee como prosa. Aun así, las dependencias detrás necesitan un mapa.
Extensiones
.gemfile, .gemspec, .rake, .rakefile, +2 más