Haskell in Maguyva: Code-Graphen für Typklassen und Module
Die Typen in Haskell sagen viel. Der Graph zeigt, wer sich auf sie verlässt.
Dateiendungen
.hs, .lhs
Maguyva unterstützt Elixir mit AST, Symbolen und Graph, damit KI-Agenten Module, Behaviours, Protokolle und Structs über Phoenix- und OTP-Code hinweg verfolgen.
Fast alles in Elixir ist ein Makroaufruf. defmodule, def, use, alias und @impl werden alle als Aufrufe geparst, und use GenServer bringt Verhalten mit, das nie in der Datei steht. Ein Tool, das nur die Aufrufsyntax sieht, kann eine Definition nicht von einer Abhängigkeit unterscheiden und einen GenServer-Callback nicht von einem Helfer.
Maguyva bildet diese Makros auf Beziehungen ab, damit ein Agent sieht, welche Module ein Behaviour implementieren und wer eine Context-Funktion aufruft.
Maguyva deckt .ex- und .exs-Dateien ab. Die Makros von Elixir werden so auf Beziehungen abgebildet:
alias, import und require erfassen Importe.use erfasst einen Import. Bei OTP- und Framework-Behaviours wie GenServer, Supervisor, Agent, Task, Phoenix.Controller, Phoenix.LiveView und Ecto.Schema wird zusätzlich erfasst, dass das Modul dieses Behaviour implementiert.@behaviour-Attribute und defimpl-Blöcke erfassen die Implementierung eines Behaviours oder Protokolls.@doc, @spec, @impl und @callback werden als Annotationen der folgenden Funktion erfasst. Wertattribute wie @timeout 5_000 nicht.%User{}-Struct-Literale zählen als Instanziierung, raise erfasst ein Throw, rescue und catch erfassen ein Catch.Sprachmakros wie def, defp, defmodule, case und with werden aus den Aufrufen gefiltert, sodass der Aufrufgraph deine Funktionen zeigt.
Accounts.register_user auf, und aus welchen Controllern?“ (find_symbol, dann dependency_search incoming)GenServer?“ (dependency_search)get_task_context)def-, defmodule-, alias- und import-Formen sind in der Grammatik Aufrufknoten. Deshalb liefert in structural_search nur das Preset functions Ergebnisse, und zwar nur für anonyme fn-Funktionen. Verwende find_symbol für benannte Funktionen und Module.IO.puts, String.*, Enum.take und Process.*, werden aus den Beziehungen gefiltert. Verwende dafür text_pattern_search.Verbinde ein Repository über den Schnellstart und prüfe dann die Unterstützungsmatrix auf der Kompatibilitätsseite. Für andere funktionale Codebasen lies den Haskell-Leitfaden.
Am besten geeignet
Agentenabläufe
Engine-Einordnung
Nützliche MCP-Einstiegspunkte
Nutz es für eine Context-Funktion oder ein Modul, wenn du Definition und Aufrufer brauchst; strukturelle Presets wählen keine benannten `def`-Formen aus.
Nutz die eingehende Traversierung auf einem Behaviour oder Protokoll, um zu sehen, welche Module es implementieren.
Nutz es für Prompts wie „verfolge einen Checkout-Request vom Controller bis zur Datenbank“.
Verwandte Guides
Die Typen in Haskell sagen viel. Der Graph zeigt, wer sich auf sie verlässt.
Dateiendungen
.hs, .lhs
Ruby liest sich wie Prosa. Die Abhängigkeiten dahinter brauchen trotzdem eine Karte.
Dateiendungen
.gemfile, .gemspec, .rake, .rakefile, +2 weitere