Haskell no Maguyva: grafos de código para type classes e módulos
Os tipos do Haskell dizem muito. O grafo mostra quem depende deles.
Extensões
.hs, .lhs
O Maguyva oferece suporte a Elixir com AST, símbolos e grafo, para que agentes de IA sigam módulos, behaviours, protocolos e structs em código Phoenix e OTP.
Quase tudo em Elixir é uma chamada de macro. defmodule, def, use, alias e @impl são analisados como chamadas, e use GenServer traz comportamento que nunca aparece no arquivo. Uma ferramenta que só vê a sintaxe de chamada não distingue uma definição de uma dependência, nem um callback de GenServer de um helper.
O Maguyva transforma essas macros em relações, para que um agente veja quais módulos implementam um behaviour e quem chama uma função de contexto.
O Maguyva cobre arquivos .ex e .exs. As macros do Elixir viram relações:
alias, import e require registram imports.use registra um import. Para behaviours de OTP e de frameworks como GenServer, Supervisor, Agent, Task, Phoenix.Controller, Phoenix.LiveView e Ecto.Schema, também registra que o módulo implementa esse behaviour.@behaviour e blocos defimpl registram a implementação de um behaviour ou protocolo.@doc, @spec, @impl e @callback são registrados como anotações da função seguinte. Atributos de valor como @timeout 5_000 não são.%User{} contam como instanciação, raise registra um throw, e rescue e catch registram um catch.Macros da linguagem como def, defp, defmodule, case e with são filtradas das chamadas, então o grafo de chamadas mostra as suas funções.
Accounts.register_user, e de quais controllers?” (find_symbol, depois dependency_search incoming)GenServer?” (dependency_search)get_task_context)def, defmodule, alias e import são nós de chamada na gramática, então em structural_search só o preset functions retorna resultados, e apenas para funções fn anônimas. Use find_symbol para funções e módulos nomeados.IO.puts, String.*, Enum.take e Process.*, são filtradas das relações. Use text_pattern_search para encontrá-las.Conecte um repositório pelo início rápido e depois confira a matriz de suporte na página de compatibilidade. Para outras bases de código funcionais, leia o guia de Haskell.
Uso ideal
Fluxos de trabalho de agente
Detalhes do motor
Pontos de entrada MCP úteis
Use para uma função de contexto ou módulo quando precisar da definição e dos chamadores; os presets estruturais não selecionam formas `def` nomeadas.
Use a travessia incoming em um behaviour ou protocolo para ver quais módulos o implementam.
Use para prompts como "rastreie uma requisição de checkout do controller até o banco de dados".
Guias relacionados
Os tipos do Haskell dizem muito. O grafo mostra quem depende deles.
Extensões
.hs, .lhs
Ruby se lê como prosa. Mesmo assim, as dependências por trás precisam de um mapa.
Extensões
.gemfile, .gemspec, .rake, .rakefile, +2 mais