Haskell dans Maguyva : des graphes de code pour classes de types et modules
Les types de Haskell en disent long. Le graphe montre qui s'appuie dessus.
Extensions
.hs, .lhs
Maguyva prend en charge Elixir avec AST, symboles et graphe, pour que les agents IA suivent modules, behaviours, protocoles et structs dans le code Phoenix et OTP.
Presque tout en Elixir est un appel de macro. defmodule, def, use, alias et @impl sont tous analysés comme des appels, et use GenServer apporte un comportement qui n’apparaît jamais dans le fichier. Un outil qui ne voit que la syntaxe d’appel ne distingue ni une définition d’une dépendance, ni un callback GenServer d’un helper.
Maguyva transforme ces macros en relations : l’agent voit quels modules implémentent un behaviour et qui appelle une fonction de contexte.
Maguyva couvre les fichiers .ex et .exs. Les macros d’Elixir deviennent des relations :
alias, import et require enregistrent des imports.use enregistre un import. Pour les behaviours OTP et de framework comme GenServer, Supervisor, Agent, Task, Phoenix.Controller, Phoenix.LiveView et Ecto.Schema, il enregistre aussi que le module implémente ce behaviour.@behaviour et les blocs defimpl enregistrent l’implémentation d’un behaviour ou d’un protocole.@doc, @spec, @impl et @callback sont enregistrés comme annotations de la fonction qui suit. Les attributs de valeur comme @timeout 5_000 ne le sont pas.%User{} comptent comme instanciation, raise enregistre un throw, et rescue et catch enregistrent un catch.Les macros du langage comme def, defp, defmodule, case et with sont filtrées des appels, pour que le graphe d’appels montre vos fonctions.
Accounts.register_user, et depuis quels contrôleurs ? » (find_symbol, puis dependency_search en incoming)GenServer ? » (dependency_search)get_task_context)def, defmodule, alias et import sont des nœuds d’appel dans la grammaire : dans structural_search, seul le preset functions renvoie des résultats, et uniquement pour les fonctions fn anonymes. Utilisez find_symbol pour les fonctions et modules nommés.IO.puts, String.*, Enum.take et Process.*, sont filtrés des relations. Utilisez text_pattern_search pour les retrouver.Connectez un dépôt avec le démarrage rapide, puis consultez la matrice de prise en charge sur la page de compatibilité. Pour d’autres bases de code fonctionnelles, lisez le guide Haskell.
Idéal pour
Workflows d'agent
Détails du moteur
Points d'entrée MCP utiles
Utilisez-le pour une fonction de contexte ou un module quand vous avez besoin de la définition et des appelants ; les presets structurels ne sélectionnent pas les formes `def` nommées.
Utilisez la traversée incoming sur un behaviour ou un protocole pour voir quels modules l'implémentent.
Utilisez-le pour des prompts comme « retrace une requête de paiement du contrôleur jusqu'à la base de données ».
Guides connexes
Les types de Haskell en disent long. Le graphe montre qui s'appuie dessus.
Extensions
.hs, .lhs
Ruby se lit comme de la prose. Les dépendances derrière ont quand même besoin d'une carte.
Extensions
.gemfile, .gemspec, .rake, .rakefile, +2 de plus