Haskell บน Maguyva: กราฟโค้ดสำหรับไทป์คลาสและโมดูล
ไทป์ของ Haskell บอกอะไรได้มาก กราฟแสดงว่าใครพึ่งพาไทป์เหล่านั้น
นามสกุลไฟล์
.hs, .lhs
Maguyva รองรับ Elixir ด้วย AST สัญลักษณ์ และกราฟ เพื่อให้เอเจนต์ AI ติดตามโมดูล behaviour โปรโตคอล และ struct ในโค้ด 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