Μετάβαση στο περιεχόμενο
cd /languages
  • Καθαρά συναρτησιακή
  • Προγραμματισμός
  • Υποστήριξη AST και συμβόλων

Haskell στο Maguyva: γράφοι κώδικα για κλάσεις τύπων και αρθρώματα

Το Maguyva υποστηρίζει τη Haskell με AST, σύμβολα και γράφο, ώστε οι πράκτορες AI να ακολουθούν συναρτήσεις, στιγμιότυπα κλάσεων τύπων και κατασκευαστές δεδομένων μεταξύ αρθρωμάτων.

Πού σκοντάφτουν τα επιφανειακά εργαλεία AI στη Haskell

Η Haskell καλεί συναρτήσεις χωρίς παρενθέσεις, τις συνθέτει με τελεστές και κάνει αποστολή μέσω κλάσεων τύπων. Το render user είναι κλήση, το f . g <$> xs περιέχει πολλές κλήσεις, και το show σημαίνει ό,τι ορίζει το στιγμιότυπο του συγκεκριμένου τύπου. Η αναζήτηση κειμένου βρίσκει τα ονόματα, όχι τα στιγμιότυπα πίσω τους.

Το Maguyva καταγράφει στιγμιότυπα και κατασκευαστές ως σχέσεις, ώστε ο πράκτορας να βλέπει ποιοι τύποι υλοποιούν μια κλάση και πού δημιουργείται μια τιμή.

Τι εξάγει το Maguyva από τη Haskell

Το Maguyva αντιστοιχίζει τα αρχεία .hs και .lhs στη Haskell. Οι συναρτήσεις και οι δεσμεύσεις εξάγονται ως καλέσιμες μονάδες, ενώ οι κλάσεις τύπων, οι τύποι data και οι τύποι newtype ως τύποι. Οι κλήσεις αναγνωρίζονται στην εφαρμογή με διαχωρισμό κενού και μέσω ενθεματικών τελεστών, και οι εισαγωγές κανονικοποιούν τους όρους qualified, hiding και as.

Οι κλάσεις τύπων και οι κατασκευαστές γίνονται σχέσεις του γράφου:

  • Το instance Eq Point καταγράφει ότι ο Point υλοποιεί την Eq.
  • Αν μια μέθοδος κλάσης έχει προεπιλεγμένο σώμα στο ίδιο αρχείο, το στιγμιότυπο που ορίζει αυτή τη μέθοδο καταγράφει παράκαμψη της προεπιλογής.
  • Η εφαρμογή ενός κατασκευαστή δεδομένων όπως Point 1 2 μετρά ως δημιουργία στιγμιοτύπου.
  • Τα error, undefined και throw καταγράφουν ρίψεις, και χειριστές όπως catch καταγράφουν συλλήψεις.

Επειδή οι δηλώσεις στιγμιοτύπων μπορούν να ορίζουν ονόματα όπως show ή return, ένας ορισμός στο ίδιο αρχείο δεν θεωρείται στόχος μιας κλήσης χωρίς δέκτη με αυτό το όνομα.

Παραδείγματα προτροπών για πράκτορες

  • «Ποιος καλεί το parseConfig και από ποια αρθρώματα;» (find_symbol, μετά dependency_search με εισερχόμενη κατεύθυνση)
  • «Ποιοι τύποι έχουν στιγμιότυπο ToJSON;» (dependency_search)
  • «Ακολούθησε πώς ένα αίτημα αναλύεται και επικυρώνεται.» (get_task_context)

Γνωστοί περιορισμοί

  • Περίπου 130 ονόματα του Prelude και της βασικής βιβλιοθήκης, όπως map, foldr, fmap, pure και >>=, καθώς και αρθρώματα όπως Data.List και Control.Monad, φιλτράρονται από τις σχέσεις. Για αυτά χρησιμοποιήστε το text_pattern_search.
  • Στη γραμματική, ο απλός κόμβος συνάρτησης δηλώνει και τύπους συναρτήσεων, οπότε η προεπιλογή functions στο structural_search επιστρέφει μόνο lambda, ενώ οι προεπιλογές methods και variables δεν επιλέγουν τίποτα. Χρησιμοποιήστε το find_symbol για επώνυμες συναρτήσεις.
  • Τα εγγράμματα αρχεία .lhs διαβάζονται ολόκληρα με τη γραμματική της Haskell· αναμένετε ελλιπή αποτελέσματα σε αυτά τα αρχεία.
  • Η Haskell δεν έχει σύνταξη διακοσμητών, οπότε οι σχέσεις διακοσμητών σημειώνονται ως μη εφαρμόσιμες.

Επόμενα βήματα

Συνδέστε ένα αποθετήριο με τον γρήγορο οδηγό εκκίνησης και έπειτα δείτε τον πίνακα υποστήριξης στη σελίδα συμβατότητας. Για άλλες συναρτησιακές βάσεις κώδικα, διαβάστε τον οδηγό για την Elixir.

Ιδανική χρήση

  • > Υπηρεσίες και βιβλιοθήκες Haskell με πολλά αρθρώματα, κλάσεις τύπων και στιγμιότυπα.
  • > Μεταγλωττιστές, αναλυτές και άλλες βάσεις κώδικα όπου μια αλλαγή σε έναν τύπο δεδομένων φτάνει μακριά.
  • > Ομάδες που διαβάζουν άγνωστο κώδικα Haskell μαζί με πράκτορες AI πριν από αναδιαμόρφωση.

Ροές εργασίας πρακτόρων

  • > Εύρεση όλων των καλούντων μιας συνάρτησης πριν αλλάξει η υπογραφή τύπου της.
  • > Καταγραφή των τύπων που έχουν στιγμιότυπο για μια κλάση τύπων.
  • > Ανίχνευση του πού δημιουργείται ένας κατασκευαστής δεδομένων και ποιες συναρτήσεις τον χρησιμοποιούν.

Λεπτομέρειες μηχανής

  • > Η υποστήριξη της Haskell αντιστοιχίζει τα αρχεία `.hs` και `.lhs` στη Haskell. Οι κλάσεις τύπων, οι τύποι `data` και οι τύποι `newtype` είναι τύποι· οι κλήσεις αναγνωρίζονται στην εφαρμογή με κενά και μέσω ενθεματικών τελεστών.
  • > Το `instance Eq Point` καταγράφει ότι ο `Point` υλοποιεί την `Eq`, και μια μέθοδος στιγμιοτύπου που αντικαθιστά την προεπιλογή της κλάσης στο ίδιο αρχείο καταγράφει παράκαμψη.
  • > Η εφαρμογή ενός κατασκευαστή δεδομένων μετρά ως δημιουργία στιγμιοτύπου· περίπου 130 ονόματα του Prelude και της βασικής βιβλιοθήκης φιλτράρονται από τις σχέσεις.

Χρήσιμα σημεία εισόδου MCP

  • find_symbol

    Χρησιμοποιήστε το για μια συνάρτηση ή έναν τύπο όταν χρειάζεστε τον ορισμό και τις αναφορές· οι δομικές προεπιλογές επιστρέφουν μόνο lambda.

  • dependency_search

    Χρησιμοποιήστε εισερχόμενη διάσχιση σε μια κλάση τύπων για να δείτε ποιοι τύποι έχουν στιγμιότυπα.

  • get_task_context

    Χρησιμοποιήστε το για προτροπές όπως «ακολούθησε πώς ένα αίτημα αναλύεται και επικυρώνεται».