Maguyva में Haskell: टाइप क्लास और मॉड्यूल के लिए कोड ग्राफ़
Haskell के टाइप बहुत कुछ बताते हैं। ग्राफ़ दिखाता है कि उन पर कौन निर्भर है।
एक्सटेंशन
.hs, .lhs
Maguyva, Elixir को AST, सिंबल और ग्राफ़ के साथ सपोर्ट करता है, ताकि AI एजेंट Phoenix और OTP कोड में मॉड्यूल, बिहेवियर, प्रोटोकॉल और स्ट्रक्ट को ट्रेस कर सकें।
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 इनकमिंग)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` रूप नहीं चुनते।
यह देखने के लिए इनकमिंग ट्रैवर्सल इस्तेमाल करें कि कौन-से मॉड्यूल किसी बिहेवियर या प्रोटोकॉल को लागू करते हैं।
"किसी चेकआउट अनुरोध को कंट्रोलर से डेटाबेस तक ट्रेस करो" जैसे प्रॉम्प्ट के लिए इस्तेमाल करें।
संबंधित गाइड
Haskell के टाइप बहुत कुछ बताते हैं। ग्राफ़ दिखाता है कि उन पर कौन निर्भर है।
एक्सटेंशन
.hs, .lhs
Ruby गद्य की तरह पढ़ी जाती है। पर उसके पीछे की डिपेंडेंसी को नक्शे की ज़रूरत है।
एक्सटेंशन
.gemfile, .gemspec, .rake, .rakefile, +2 और