Παρακαλώ χρησιμοποιήστε αυτό το αναγνωριστικό για να παραπέμψετε ή να δημιουργήσετε σύνδεσμο προς αυτό το τεκμήριο: http://artemis.cslab.ece.ntua.gr:8080/jspui/handle/123456789/17370
Τίτλος: Μετασχηματισμός Συναρτήσεων Haskell σε Μοναδιαία Μορφή
Συγγραφείς: Τερζιδάκη, Αλεξάνδρα
Παπασπύρου Νικόλαος
Λέξεις κλειδιά: Αγνά Συναρτησιακές Γλώσσες Προγραμματισμού
Haskell
Μονάδες
Σύνθεση monads
Extensible Effects
Monad Transformers
Μετασχηματισμός Κώδικα.
Ημερομηνία έκδοσης: 20-Σεπ-2019
Περίληψη: Οι αγνές συναρτησιακές γλώσσες προγραμματισμού, σε αντίθεση με διάφορες άλλες κατηγορίες γλωσσών (προστακτικές, λογικές, κτλ.), χρησιμοποιούν τις συναρτήσεις όπως ορίζονται από το μαθηματικό πρότυπο. Έτσι, μία συνάρτηση για μία δεδομένη είσοδο θα δώσει μία και μόνο μία έξοδο, όσες φορές και αν καλεστεί. Το γεγονός αυτό, παρά τα πλεονεκτήματα που μπορεί να έχει, δημιουργεί κάποια προβλήματα που σχετίζονται με τον χειρισμό μη αγνών (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 σύνταξη που, μέχρι πρότινος, δεν ήταν αποδεκτή.
URI: http://artemis.cslab.ece.ntua.gr:8080/jspui/handle/123456789/17370
Εμφανίζεται στις συλλογές:Διπλωματικές Εργασίες - Theses

Αρχεία σε αυτό το τεκμήριο:
Αρχείο Περιγραφή ΜέγεθοςΜορφότυπος 
Terzidaki_Thesis.pdf624.88 kBAdobe PDFΕμφάνιση/Άνοιγμα


Όλα τα τεκμήρια του δικτυακού τόπου προστατεύονται από πνευματικά δικαιώματα.