Haskell i Maguyva: kodegrafer til typeklasser og moduler
Typerne i Haskell siger meget. Grafen viser, hvem der læner sig op ad dem.
Filendelser
.hs, .lhs
Maguyva understøtter Elixir med AST, symboler og graf, så AI-agenter kan følge moduler, behaviours, protokoller og structs i Phoenix- og OTP-kode.
Næsten alt i Elixir er et makrokald. defmodule, def, use, alias og @impl parses alle som kald, og use GenServer henter adfærd ind, som aldrig står i filen. Et værktøj, der kun ser kaldsyntaksen, kan ikke skelne en definition fra en afhængighed eller en GenServer-callback fra en hjælpefunktion.
Maguyva gør disse makroer til relationer, så en agent kan se, hvilke moduler der implementerer en behaviour, og hvem der kalder en kontekstfunktion.
Maguyva dækker .ex- og .exs-filer. Makroerne i Elixir bliver til relationer sådan her:
alias, import og require registrerer imports.use registrerer en import. For OTP- og framework-behaviours som GenServer, Supervisor, Agent, Task, Phoenix.Controller, Phoenix.LiveView og Ecto.Schema registreres det også, at modulet implementerer den behaviour.@behaviour-attributter og defimpl-blokke registrerer implementeringen af en behaviour eller en protokol.@doc, @spec, @impl og @callback registreres som annotationer på den funktion, der følger. Værdiattributter som @timeout 5_000 gør ikke.%User{}-structliteraler tæller som instansiering, raise registrerer et throw, og rescue og catch registrerer en catch.Sprogmakroer som def, defp, defmodule, case og with filtreres fra kaldene, så kaldgrafen viser dine funktioner.
Accounts.register_user, og fra hvilke controllere?” (find_symbol, derefter dependency_search incoming)GenServer?” (dependency_search)get_task_context)def-, defmodule-, alias- og import-former er kaldnoder i grammatikken, så i structural_search returnerer kun presettet functions resultater, og kun for anonyme fn-funktioner. Brug find_symbol til navngivne funktioner og moduler.IO.puts, String.*, Enum.take og Process.*, filtreres fra relationerne. Brug text_pattern_search til dem.Tilslut et repository med hurtigstarten, og se derefter understøttelsesmatricen på kompatibilitetssiden. For andre funktionelle kodebaser kan du læse guiden til Haskell.
Bedst egnet til
Agent-arbejdsgange
Motordetaljer
Nyttige MCP-indgange
Brug det til en kontekstfunktion eller et modul, når du har brug for definitionen og kalderne; strukturelle presets vælger ikke navngivne `def`-former.
Brug incoming-traversering på en behaviour eller en protokol for at se, hvilke moduler der implementerer den.
Brug det til prompts som "spor en betalingsforespørgsel fra controlleren til databasen".
Relaterede guides
Typerne i Haskell siger meget. Grafen viser, hvem der læner sig op ad dem.
Filendelser
.hs, .lhs
Ruby læses som prosa. Afhængighederne bag den har alligevel brug for et kort.
Filendelser
.gemfile, .gemspec, .rake, .rakefile, +2 flere