MaguyvaのHaskell対応: 型クラスとモジュールのコードグラフ
Haskellの型は多くを語ります。グラフは誰がそれに依存しているかを示します。
拡張子
.hs, .lhs
Elixirでは、ほとんどすべてがマクロ呼び出しです。defmodule、def、use、alias、@impl はどれも呼び出しとして解析され、use GenServer はファイルに一度も現れない振る舞いを取り込みます。呼び出しの構文しか見えないツールには、定義と依存関係の区別も、GenServerのコールバックとヘルパーの区別もつきません。
Maguyvaはそれらのマクロを関係性に対応付けるため、エージェントはどのモジュールがビヘイビアを実装し、誰がコンテキスト関数を呼び出しているかを確認できます。
Maguyvaは .ex と .exs ファイルに対応しています。Elixirのマクロは次のように関係性に対応付けられます。
alias、import、require はインポートを記録します。use はインポートを記録します。GenServer、Supervisor、Agent、Task、Phoenix.Controller、Phoenix.LiveView、Ecto.Schema のようなOTPやフレームワークのビヘイビアについては、そのモジュールがそのビヘイビアを実装していることも記録します。@behaviour 属性と defimpl ブロックは、ビヘイビアやプロトコルの実装を記録します。@doc、@spec、@impl、@callback のような予約済みのモジュール属性は、その後に続く関数へのアノテーションとして記録されます。@timeout 5_000 のような値を持つ属性は記録されません。%User{} の構造体リテラルはインスタンス化として数えられ、raise はスローを、rescue と catch はキャッチを記録します。def、defp、defmodule、case、with のような言語のマクロは呼び出しから除外されるため、コールグラフにはあなたの関数が表示されます。
Accounts.register_user を呼び出しているのは誰で、どのコントローラーからか?」(find_symbol、次に dependency_search の incoming)GenServer を実装しているモジュールはどれか?」(dependency_search)get_task_context)def、defmodule、alias、import の形式は文法上は呼び出しノードなので、structural_search で結果を返すのは functions プリセットだけで、それも無名の fn 関数に限られます。名前付きの関数やモジュールには find_symbol を使ってください。IO.puts、String.*、Enum.take、Process.* のような約55個の標準ライブラリの呼び出しは関係性から除外されます。それらには text_pattern_search を使ってください。クイックスタートでリポジトリを接続し、互換性ページで対応マトリクスを確認してください。ほかの関数型のコードベースについては、Haskellガイドをご覧ください。
最適な用途
エージェントワークフロー
エンジンの詳細
役立つMCPエントリーポイント
定義と呼び出し元が必要なときに、コンテキスト関数やモジュールで使ってください。構造的なプリセットは名前付きの `def` 形式を選択しません。
ビヘイビアやプロトコルに対してincomingのトラバーサルを使い、それを実装しているモジュールを確認してください。
「チェックアウトのリクエストをコントローラーからデータベースまで追跡して」のようなプロンプトに使ってください。
関連ガイド
Haskellの型は多くを語ります。グラフは誰がそれに依存しているかを示します。
拡張子
.hs, .lhs
Rubyは文章のように読めます。それでも、その背後の依存関係には地図が必要です。
拡張子
.gemfile, .gemspec, .rake, .rakefile, ほか2件