dc.contributor.author | Τερζιδάκη, Αλεξάνδρα | el |
dc.contributor.author | Terzidaki, Alexandra | en |
dc.date.accessioned | 2020-04-22T14:15:16Z | |
dc.date.available | 2020-04-22T14:15:16Z | |
dc.identifier.uri | https://dspace.lib.ntua.gr/xmlui/handle/123456789/50211 | |
dc.identifier.uri | http://dx.doi.org/10.26240/heal.ntua.17909 | |
dc.rights | Αναφορά Δημιουργού-Μη Εμπορική Χρήση-Όχι Παράγωγα Έργα 3.0 Ελλάδα | * |
dc.rights.uri | http://creativecommons.org/licenses/by-nc-nd/3.0/gr/ | * |
dc.subject | Αγνά συναρτησιακές γλώσσες προγραμματισμού | el |
dc.subject | Purely functional programming languages | en |
dc.subject | Μονάδες | el |
dc.subject | Σύνθεση monads | el |
dc.subject | Μετασχηματισμός κώδικα | el |
dc.subject | Haskell | en |
dc.subject | Monads | en |
dc.subject | Monad composition | en |
dc.subject | Monad trans- formers | en |
dc.subject | Extensible-effects | en |
dc.subject | Code transformation | en |
dc.title | Μετασχηματισμός συναρτήσεων Haskell σε μοναδιαία μορφή | el |
heal.type | bachelorThesis | |
heal.classification | Συναρτησιακές γλώσσες προγραμματισμού | el |
heal.language | el | |
heal.access | free | |
heal.recordProvider | ntua | el |
heal.publicationDate | 2019-09-20 | |
heal.abstract | Οι αγνές συναρτησιακές γλώσσες προγραμματισμού, σε αντίθεση με διάφορες άλλες κατηγορίες γλωσσών (προστακτικές, λογικές, κτλ.), χρησιμοποιούν τις συναρτήσεις όπως ορίζονται από το μα- θηματικό πρότυπο. Έτσι, μία συνάρτηση για μία δεδομένη είσοδο θα δώσει μία και μόνο μία έξοδο, όσες φορές και αν καλεστεί. Το γεγονός αυτό, παρά τα πλεονεκτήματα που μπορεί να έχει, δημιουργεί κάποια προβλήματα που σχετίζονται με τον χειρισμό μη αγνών (impure) συναρτησιακών χαρακτηρι- στικών, όπως τα side effects, η αποτυχία τερματισμού, ο μη ντετερμινισμός, κ.α. Στην Haskell, το εργαλείο που είναι υπεύθυνο για την ενσωμάτωση μη αγνών συναρτησιακά χα- ρακτηριστικά ονομάζεται monads και η λογική του στηρίζεται στον κλάδο των μαθηματικών που καλείται category theory. Ο ορισμός των monads περιέχει τις συναρτήσεις return και bind (>>=) που βοηθούν στην διαχείριση τιμών που δεν είναι αγνές, τις οποίες συνηθίζεται να καλούμε υπο- λογισμούς, και συμβολίζονται με M a. Αν και τα monads είναι ιδιαίτερα επιτακτικά στην πράξη, η ιδιόμορφη φύση τους αποθαρρύνει τους προγραμματιστές να τα κατανοήσουν και κατά συνέπεια να τα χρησιμοποιήσουν με κατάλληλο τρόπο. Ένα σημαντικό εμπόδιο που τίθεται, σχετίζεται με το γεγονός ότι δεν ορίζεται μαθηματικά η κα- θολική πράξη της σύνθεσης των monads. Ωστόσο, στον πραγματικό κόσμο είναι συχνά απαραίτητη η συνδιαλλαγή με πολλάπλα και, πιθανώς, διαφορετικού σκοπού προστακτικά γνωρίσματα. Έτσι, το επιστημονικό ενδιαφέρον στράφηκε στην ανάπτυξη πρακτικών μοντέλων που καταφέρνουν να επιτύ- χουν την επιθυμητή ”μείξη” των impure στοχείων. Δύο τέτοιες μέθοδοι είναι οι monad Transformers και τα Extensible Effects. Στο πλαίσιο της παρούσας διπλωματικής επιχειρήσαμε να επεκτείνουμε τον τρόπο με τον οποίο οι προγραμματιστές της Haskell αντιμετωπίζουν τα monads. Το εργαλείο που αναπτύξαμε διευκολύ- νει τη χρήση των monads και παρέχει επιπλέον δυνατότητες σχετικά με την ταυτόχρονη επεξεργασία πολλαπλών και ετερόκλητων impure στοιχείων. Για τους σκοπούς αυτούς, επιλέξαμε να πειραμα- τιστούμε με ένα υποσύνολο της Haskell, τη γλώσσα RouReg. Mε τη βοήθεια του framework των Extensible Effects επιδιώξαμε τη μετατροπή των συναρτήσεων των επικείμενων προγραμμάτων σε monadic form. Με αυτόν τον τρόπο, επιτύχαμε όλες οι συναρτήσεις του μετασχηματισμένου κώδικα, να έχουν τη μορφή Eff r (a → Eff r (...)), δηλαδή να βρίσκονται εντός του Eff r monad, μέσω του οποίου μπορούν να συνδιαστούν ταυτόχρονα διαφορετικά effects, ως ένωση στο σύνολο r. Ένας τέ- τοιος μετασχηματισμός, πριν τη διαδικαδία της μεταγλώττισης, επιτρέπει στον ανεπεξέργαστο κώδικα να περιέχει monadic σύνταξη που, μέχρι πρότινος, δεν ήταν αποδεκτή. | el |
heal.advisorName | Παπασπύρου, Νικόλαος | el |
heal.committeeMemberName | Παγουρτζής, Αριστείδης | el |
heal.committeeMemberName | Γκούμας, Γεώργιος | el |
heal.committeeMemberName | Παπασπύρου, Νικόλαος | el |
heal.academicPublisher | Εθνικό Μετσόβιο Πολυτεχνείο. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών. Τομέας Τεχνολογίας Πληροφορικής και Υπολογιστών | el |
heal.academicPublisherID | ntua | |
heal.numberOfPages | 74 σ. | |
heal.fullTextAvailability | false |
Οι παρακάτω άδειες σχετίζονται με αυτό το τεκμήριο: