Please use this identifier to cite or link to this item: http://artemis.cslab.ece.ntua.gr:8080/jspui/handle/123456789/17370
Full metadata record
DC FieldValueLanguage
dc.contributor.authorΤερζιδάκη, Αλεξάνδρα-
dc.date.accessioned2019-09-30T11:51:43Z-
dc.date.available2019-09-30T11:51:43Z-
dc.date.issued2019-09-20-
dc.identifier.urihttp://artemis.cslab.ece.ntua.gr:8080/jspui/handle/123456789/17370-
dc.description.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 σύνταξη που, μέχρι πρότινος, δεν ήταν αποδεκτή.en_US
dc.languageelen_US
dc.subjectΑγνά Συναρτησιακές Γλώσσες Προγραμματισμούen_US
dc.subjectHaskellen_US
dc.subjectΜονάδεςen_US
dc.subjectΣύνθεση monadsen_US
dc.subjectExtensible Effectsen_US
dc.subjectMonad Transformersen_US
dc.subjectΜετασχηματισμός Κώδικα.en_US
dc.titleΜετασχηματισμός Συναρτήσεων Haskell σε Μοναδιαία Μορφήen_US
dc.description.pages74en_US
dc.contributor.supervisorΠαπασπύρου Νικόλαοςen_US
dc.departmentΤομέας Τεχνολογίας Πληροφορικής και Υπολογιστώνen_US
Appears in Collections:Διπλωματικές Εργασίες - Theses

Files in This Item:
File Description SizeFormat 
Terzidaki_Thesis.pdf624.88 kBAdobe PDFView/Open


Items in Artemis are protected by copyright, with all rights reserved, unless otherwise indicated.