Haskell i Maguyva: kodgrafer för typklasser och moduler
Haskells typer säger mycket. Grafen visar vem som förlitar sig på dem.
Filändelser
.hs, .lhs
Maguyva stöder Elixir med AST, symboler och graf, så att AI-agenter kan följa moduler, behaviours, protokoll och structs i Phoenix- och OTP-kod.
Nästan allt i Elixir är ett makroanrop. defmodule, def, use, alias och @impl tolkas alla som anrop, och use GenServer tar in beteende som aldrig syns i filen. Ett verktyg som bara ser anropssyntaxen kan inte skilja en definition från ett beroende, eller en GenServer-callback från en hjälpfunktion.
Maguyva gör om de makrona till relationer, så att en agent ser vilka moduler som implementerar en behaviour och vem som anropar en kontextfunktion.
Maguyva täcker .ex- och .exs-filer. Elixirs makron blir relationer så här:
alias, import och require registrerar importer.use registrerar en import. För OTP- och ramverks-behaviours som GenServer, Supervisor, Agent, Task, Phoenix.Controller, Phoenix.LiveView och Ecto.Schema registreras också att modulen implementerar den behaviouren.@behaviour-attribut och defimpl-block registrerar implementationen av en behaviour eller ett protokoll.@doc, @spec, @impl och @callback registreras som annoteringar på funktionen som följer. Värdeattribut som @timeout 5_000 gör det inte.%User{}-structliteraler räknas som instansiering, raise registrerar ett throw, och rescue och catch registrerar en catch.Språkmakron som def, defp, defmodule, case och with filtreras bort från anropen, så att anropsgrafen visar dina funktioner.
Accounts.register_user, och från vilka controllers?” (find_symbol, sedan dependency_search incoming)GenServer?” (dependency_search)get_task_context)def-, defmodule-, alias- och import-former är anropsnoder i grammatiken, så i structural_search returnerar bara presetet functions resultat, och bara för anonyma fn-funktioner. Använd find_symbol för namngivna funktioner och moduler.IO.puts, String.*, Enum.take och Process.*, filtreras bort från relationerna. Använd text_pattern_search för dem.Anslut ett repo med snabbstarten och kontrollera sedan stödmatrisen på kompatibilitetssidan. För andra funktionella kodbaser, läs guiden för Haskell.
Bäst lämpad för
Agentarbetsflöden
Motordetaljer
Användbara MCP-ingångar
Använd det för en kontextfunktion eller modul när du behöver definitionen och anroparna; strukturella preset väljer inte namngivna `def`-former.
Använd incoming-traversering på en behaviour eller ett protokoll för att se vilka moduler som implementerar det.
Använd det för prompter som "spåra en betalningsförfrågan från controllern till databasen".
Relaterade guider
Haskells typer säger mycket. Grafen visar vem som förlitar sig på dem.
Filändelser
.hs, .lhs
Ruby läses som prosa. Beroendena bakom behöver ändå en karta.
Filändelser
.gemfile, .gemspec, .rake, .rakefile, +2 till