Haskell у Maguyva: графи коду для класів типів і модулів
Типи Haskell багато що кажуть. Граф показує, хто від них залежить.
Розширення
.hs, .lhs
Maguyva підтримує Elixir з AST, символами та графом, щоб ШІ-агенти могли простежувати модулі, behaviour, протоколи та структури в коді на Phoenix і OTP.
Майже все в Elixir є викликом макросу. defmodule, def, use, alias і @impl розбираються як виклики, а use GenServer привносить поведінку, якої у файлі ніколи не видно. Інструмент, що бачить лише синтаксис викликів, не здатен відрізнити визначення від залежності чи колбек GenServer від допоміжної функції.
Maguyva перетворює ці макроси на зв’язки, і агент бачить, які модулі реалізують behaviour і хто викликає функцію контексту.
Maguyva охоплює файли .ex і .exs. Макроси Elixir стають зв’язками так:
alias, import і require фіксують імпорти.use фіксує імпорт. Для behaviour OTP і фреймворків, як-от GenServer, Supervisor, Agent, Task, Phoenix.Controller, Phoenix.LiveView і Ecto.Schema, він також фіксує, що модуль реалізує цей behaviour.@behaviour і блоки defimpl фіксують реалізацію behaviour або протоколу.@doc, @spec, @impl і @callback, фіксуються як анотації наступної функції. Атрибути, що зберігають значення, наприклад @timeout 5_000, не фіксуються.%User{} вважаються створенням екземпляра, raise фіксує викидання винятку, а rescue і catch фіксують його перехоплення.Макроси мови, як-от def, defp, defmodule, case і with, відфільтровано з викликів, тож граф викликів показує ваші власні функції.
Accounts.register_user і з яких контролерів?» (find_symbol, потім dependency_search за вхідними зв’язками)GenServer?» (dependency_search)get_task_context)def, defmodule, alias і import у граматиці є вузлами викликів, тому результати в structural_search повертає лише пресет functions, і то тільки для анонімних функцій fn. Для іменованих функцій і модулів використовуйте find_symbol.IO.puts, String.*, Enum.take і Process.*, відфільтровано зі зв’язків. Для них використовуйте text_pattern_search.Під’єднайте репозиторій за швидким стартом, потім перегляньте матрицю підтримки на сторінці сумісності. Для інших функціональних кодових баз прочитайте посібник із Haskell.
Найкраще підходить
Робочі процеси агента
Деталі рушія
Корисні точки входу MCP
Використовуйте для функції контексту чи модуля, коли потрібні визначення й виклики; структурні пресети не вибирають іменовані форми `def`.
Використовуйте обхід вхідних зв'язків, щоб побачити, які модулі реалізують behaviour або протокол.
Використовуйте для промптів на кшталт «простеж платіжний запит від контролера до бази даних».
Пов'язані гайди
Типи Haskell багато що кажуть. Граф показує, хто від них залежить.
Розширення
.hs, .lhs
Ruby читається як проза. Та залежностям за нею все одно потрібна карта.
Розширення
.gemfile, .gemspec, .rake, .rakefile, +2 ще