Elixir Support in Maguyva: Code Graphs for Phoenix and OTP Apps
Elixir's structure lives in macros. The graph reads them as structure.
Extensions
.ex, .exs
Maguyva parses Haskell with AST, symbol, and graph support, so AI agents can follow functions, type class instances, and data constructors across modules.
Haskell calls functions without parentheses, composes them with operators, and dispatches through type classes. render user is a call, f . g <$> xs holds several, and show means whatever the instance for that type says. Text search finds the names, not the instances behind them.
Maguyva records instances and constructors as relationships, so an agent can see which types implement a class and where a value is built.
Maguyva maps .hs and .lhs files to Haskell. Functions and bindings are extracted as callables, and type classes, data types, and newtypes as types. Calls are recognised in space-separated application and through infix operators, and imports normalise qualified, hiding, and as clauses.
Type classes and constructors become graph relationships:
instance Eq Point records that Point implements Eq.Point 1 2, counts as instantiation.error, undefined, and throw record throws, and handlers such as catch record catches.Because instance declarations can define names such as show or return, a same-file definition is not assumed to be the target of a bare call with that name.
parseConfig, and from which modules?” (find_symbol, then dependency_search incoming)ToJSON instance?” (dependency_search)get_task_context)map, foldr, fmap, pure, and >>=, and modules such as Data.List and Control.Monad, are filtered from relationships. Use text_pattern_search for them.functions preset in structural_search returns lambdas only, and the methods and variables presets select nothing. Use find_symbol for named functions..lhs files are read with the Haskell grammar as a whole, so expect partial results for them.Connect a repository with the quickstart, then check the support matrix on the compatibility page. For other functional codebases, read the Elixir guide.
Best fit
Agent workflows
Engine details
Useful MCP entry points
Use it for a function or type when you need the definition and references; structural presets return lambdas only.
Use incoming traversal on a type class to see which types have instances.
Use it for prompts like “trace how a request is decoded and validated.”
Related guides
Elixir's structure lives in macros. The graph reads them as structure.
Extensions
.ex, .exs
Relevant when you want AI assistance in Rust without losing the structural guardrails that make Rust worth using.
Extensions
.rs