Haskell trên Maguyva: đồ thị mã cho type class và module
Kiểu của Haskell đã nói lên nhiều điều. Đồ thị cho thấy ai phụ thuộc vào chúng.
Phần mở rộng
.hs, .lhs
Maguyva hỗ trợ Elixir với AST, ký hiệu và đồ thị, để agent AI có thể lần theo module, behaviour, protocol và struct trong mã Phoenix và OTP.
Gần như mọi thứ trong Elixir đều là lời gọi macro. defmodule, def, use, alias và @impl đều được phân tích như lời gọi, còn use GenServer mang vào những hành vi không bao giờ xuất hiện trong tệp. Một công cụ chỉ thấy cú pháp lời gọi sẽ không phân biệt được định nghĩa với phụ thuộc, hay callback GenServer với hàm trợ giúp.
Maguyva biến các macro đó thành quan hệ, để agent thấy module nào triển khai một behaviour và ai gọi một hàm context.
Maguyva bao quát các tệp .ex và .exs. Các macro của Elixir trở thành quan hệ như sau:
alias, import và require ghi lại import.use ghi lại một import. Với các behaviour của OTP và framework như GenServer, Supervisor, Agent, Task, Phoenix.Controller, Phoenix.LiveView và Ecto.Schema, nó còn ghi lại rằng module triển khai behaviour đó.@behaviour và khối defimpl ghi lại việc triển khai một behaviour hoặc protocol.@doc, @spec, @impl và @callback được ghi thành chú thích cho hàm đứng sau. Thuộc tính lưu giá trị, như @timeout 5_000, không được ghi lại.%User{} được tính là khởi tạo, raise ghi lại một lần ném, còn rescue và catch ghi lại một lần bắt.Các macro của ngôn ngữ như def, defp, defmodule, case và with bị lọc khỏi lời gọi, nên đồ thị lời gọi hiển thị các hàm của chính bạn.
Accounts.register_user, và từ những controller nào?” (find_symbol, sau đó dependency_search theo chiều vào)GenServer?” (dependency_search)get_task_context)def, defmodule, alias và import là nút lời gọi trong ngữ pháp, nên chỉ preset functions trong structural_search trả về kết quả, và chỉ cho các hàm ẩn danh fn. Dùng find_symbol cho hàm và module có tên.IO.puts, String.*, Enum.take và Process.* bị lọc khỏi quan hệ. Dùng text_pattern_search cho chúng.Kết nối một kho mã bằng hướng dẫn bắt đầu nhanh, sau đó xem ma trận hỗ trợ trên trang tương thích. Với các codebase hàm khác, hãy đọc hướng dẫn Haskell.
Phù hợp nhất
Workflow agent
Chi tiết engine
Điểm khởi đầu MCP hữu ích
Dùng cho hàm context hoặc module khi bạn cần định nghĩa và nơi gọi; các preset cấu trúc không chọn được dạng `def` có tên.
Dùng duyệt theo chiều vào để thấy module nào triển khai một behaviour hoặc protocol.
Dùng cho prompt như "lần theo một yêu cầu thanh toán từ controller tới cơ sở dữ liệu".
Hướng dẫn liên quan
Kiểu của Haskell đã nói lên nhiều điều. Đồ thị cho thấy ai phụ thuộc vào chúng.
Phần mở rộng
.hs, .lhs
Ruby đọc như văn xuôi. Nhưng các phụ thuộc phía sau vẫn cần một tấm bản đồ.
Phần mở rộng
.gemfile, .gemspec, .rake, .rakefile, +2 nữa