Haskell στο Maguyva: γράφοι κώδικα για κλάσεις τύπων και αρθρώματα
Οι τύποι της Haskell λένε πολλά. Ο γράφος δείχνει ποιος βασίζεται σε αυτούς.
Επεκτάσεις
.hs, .lhs
Το Maguyva υποστηρίζει την Elixir με AST, σύμβολα και γράφο, ώστε οι πράκτορες AI να ακολουθούν αρθρώματα, behaviour, πρωτόκολλα και struct σε κώδικα Phoenix και OTP.
Σχεδόν τα πάντα στην Elixir είναι κλήση μακροεντολής. Τα defmodule, def, use, alias και @impl αναλύονται όλα ως κλήσεις, ενώ το use GenServer φέρνει συμπεριφορά που δεν φαίνεται ποτέ στο αρχείο. Ένα εργαλείο που βλέπει μόνο σύνταξη κλήσεων δεν ξεχωρίζει έναν ορισμό από μια εξάρτηση ή μια συνάρτηση επανάκλησης του GenServer από μια βοηθητική συνάρτηση.
Το Maguyva μετατρέπει αυτές τις μακροεντολές σε σχέσεις, ώστε ο πράκτορας να βλέπει ποια αρθρώματα υλοποιούν ένα behaviour και ποιος καλεί μια συνάρτηση context.
Το 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 και από ποιους controller;» (find_symbol, μετά dependency_search με εισερχόμενη κατεύθυνση)GenServer;» (dependency_search)get_task_context)def, defmodule, alias και import είναι κόμβοι κλήσης στη γραμματική, οπότε μόνο η προεπιλογή functions στο structural_search επιστρέφει αποτελέσματα, και μόνο για ανώνυμες συναρτήσεις fn. Χρησιμοποιήστε το find_symbol για επώνυμες συναρτήσεις και αρθρώματα.IO.puts, String.*, Enum.take και Process.*, φιλτράρονται από τις σχέσεις. Για αυτές χρησιμοποιήστε το text_pattern_search.Συνδέστε ένα αποθετήριο με τον γρήγορο οδηγό εκκίνησης και έπειτα δείτε τον πίνακα υποστήριξης στη σελίδα συμβατότητας. Για άλλες συναρτησιακές βάσεις κώδικα, διαβάστε τον οδηγό για τη Haskell.
Ιδανική χρήση
Ροές εργασίας πρακτόρων
Λεπτομέρειες μηχανής
Χρήσιμα σημεία εισόδου MCP
Χρησιμοποιήστε το για μια συνάρτηση context ή άρθρωμα όταν χρειάζεστε τον ορισμό και τους καλούντες· οι δομικές προεπιλογές δεν επιλέγουν επώνυμες μορφές `def`.
Χρησιμοποιήστε εισερχόμενη διάσχιση για να δείτε ποια αρθρώματα υλοποιούν ένα behaviour ή πρωτόκολλο.
Χρησιμοποιήστε το για προτροπές όπως «ακολούθησε ένα αίτημα πληρωμής από τον controller έως τη βάση δεδομένων».
Σχετικοί οδηγοί
Οι τύποι της Haskell λένε πολλά. Ο γράφος δείχνει ποιος βασίζεται σε αυτούς.
Επεκτάσεις
.hs, .lhs
Η Ruby διαβάζεται σαν πεζογραφία. Οι εξαρτήσεις πίσω της χρειάζονται όμως χάρτη.
Επεκτάσεις
.gemfile, .gemspec, .rake, .rakefile, +2 ακόμα