Haskell in Maguyva: grafi del codice per type class e moduli
I tipi di Haskell dicono molto. Il grafo mostra chi ci fa affidamento.
Estensioni
.hs, .lhs
Maguyva supporta Elixir con AST, simboli e grafo, così gli agenti IA seguono moduli, behaviour, protocolli e struct nel codice Phoenix e OTP.
In Elixir quasi tutto è una chiamata di macro. defmodule, def, use, alias e @impl vengono tutti analizzati come chiamate, e use GenServer porta con sé un comportamento che nel file non compare mai. Uno strumento che vede solo la sintassi di chiamata non distingue una definizione da una dipendenza, né una callback di GenServer da un helper.
Maguyva trasforma quelle macro in relazioni, così un agente vede quali moduli implementano un behaviour e chi chiama una funzione di contesto.
Maguyva copre i file .ex e .exs. Le macro di Elixir diventano relazioni:
alias, import e require registrano import.use registra un import. Per i behaviour OTP e dei framework come GenServer, Supervisor, Agent, Task, Phoenix.Controller, Phoenix.LiveView e Ecto.Schema, registra anche che il modulo implementa quel behaviour.@behaviour e i blocchi defimpl registrano l’implementazione di un behaviour o di un protocollo.@doc, @spec, @impl e @callback vengono registrati come annotazioni della funzione che segue. Gli attributi di valore come @timeout 5_000 no.%User{} contano come istanziazione, raise registra un throw, e rescue e catch registrano un catch.Le macro del linguaggio come def, defp, defmodule, case e with vengono filtrate dalle chiamate, così il grafo delle chiamate mostra le tue funzioni.
Accounts.register_user, e da quali controller?” (find_symbol, poi dependency_search incoming)GenServer?” (dependency_search)get_task_context)def, defmodule, alias e import sono nodi di chiamata nella grammatica, quindi in structural_search restituisce risultati solo il preset functions, e solo per le funzioni fn anonime. Usa find_symbol per funzioni e moduli con nome.IO.puts, String.*, Enum.take e Process.*, vengono filtrate dalle relazioni. Usa text_pattern_search per trovarle.Collega un repository con la guida rapida, poi consulta la matrice di supporto nella pagina di compatibilità. Per altre basi di codice funzionali, leggi la guida a Haskell.
Il più adatto per
Workflow degli agenti
Dettagli del motore
Punti di ingresso MCP utili
Usalo per una funzione di contesto o un modulo quando ti servono definizione e chiamanti; i preset strutturali non selezionano le forme `def` con nome.
Usa l'attraversamento incoming su un behaviour o un protocollo per vedere quali moduli lo implementano.
Usalo per prompt come "traccia una richiesta di checkout dal controller fino al database".
Guide correlate
I tipi di Haskell dicono molto. Il grafo mostra chi ci fa affidamento.
Estensioni
.hs, .lhs
Ruby si legge come prosa. Le dipendenze dietro hanno comunque bisogno di una mappa.
Estensioni
.gemfile, .gemspec, .rake, .rakefile, +2 altre