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

Canonical source: https://maguyva.ai/el/languages/haskell

License: text under [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/); code samples under [MIT-0](https://opensource.org/license/mit-0); the Maguyva name, logos, brand assets and other code are not covered. Details: [maguyva.ai/license](https://maguyva.ai/license).

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

## Στιγμιότυπο υποστήριξης

- Επίπεδο: Υποστήριξη AST και συμβόλων
- Προγραμματισμός
- Επεκτάσεις: .hs, .lhs
- Πραγματική ανάλυση AST για αναζήτηση με επίγνωση σύνταξης και δομικό πλαίσιο.
- Τα επώνυμα σύμβολα τροφοδοτούν τη σημασιολογική αναζήτηση και τη διασταύρωση αναφορών. Η πλοήγηση στον γράφο είναι διαθέσιμη όταν είναι ενεργοποιημένη η εξαγωγή σχέσεων.
- Αυτή η γλώσσα συνεισφέρει σύμβολα και σχέσεις στην αναζήτηση με επίγνωση του γράφου· οι υποστηριζόμενοι τύποι ακμών διαφέρουν ανάλογα με τις εγγενείς δομές της.
- Διατίθενται τόσο ανάλυση AST όσο και εξαγωγή συμβόλων.

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

- Υπηρεσίες και βιβλιοθήκες Haskell με πολλά αρθρώματα, κλάσεις τύπων και στιγμιότυπα.
- Μεταγλωττιστές, αναλυτές και άλλες βάσεις κώδικα όπου μια αλλαγή σε έναν τύπο δεδομένων φτάνει μακριά.
- Ομάδες που διαβάζουν άγνωστο κώδικα Haskell μαζί με πράκτορες 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 δεν έχει σύνταξη διακοσμητών, οπότε οι σχέσεις διακοσμητών σημειώνονται ως μη εφαρμόσιμες.

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

Συνδέστε ένα αποθετήριο με τον [γρήγορο οδηγό εκκίνησης](/el/docs/quickstart) και έπειτα δείτε τον πίνακα υποστήριξης στη [σελίδα συμβατότητας](/el/docs/compatibility). Για άλλες συναρτησιακές βάσεις κώδικα, διαβάστε τον [οδηγό για την Elixir](/el/languages/elixir).

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

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

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

- `find_symbol`: Χρησιμοποιήστε το για μια συνάρτηση ή έναν τύπο όταν χρειάζεστε τον ορισμό και τις αναφορές· οι δομικές προεπιλογές επιστρέφουν μόνο lambda.
- `dependency_search`: Χρησιμοποιήστε εισερχόμενη διάσχιση σε μια κλάση τύπων για να δείτε ποιοι τύποι έχουν στιγμιότυπα.
- `get_task_context`: Χρησιμοποιήστε το για προτροπές όπως «ακολούθησε πώς ένα αίτημα αναλύεται και επικυρώνεται».
