Συμβουλές για να δουλεύεις με την Unison τοπικά μέσω του Exercism CLI
Γράφεις κώδικα Unison σε αρχεία με κατάληξη .u. Τα ονομάζουμε αρχεία "scratch", επειδή τα χρησιμοποιείς για να γράψεις κώδικα Unison, αλλά ο Unison Codebase Manager (UCM) είναι αυτός που τελικά αποθηκεύει και διατηρεί το περιεχόμενο αυτών των αρχείων. Θα εξακολουθείς να υποβάλλεις αυτά τα αρχεία μέσω του Exercism CLI, αλλά ο UCM μπορεί να θεωρηθεί η "πηγή αλήθειας" για τον κώδικα Unison.
Αν και η Unison δεν έχει REPL (βρόχος ανάγνωσης, αξιολόγησης και εκτύπωσης), μπορείς να αξιολογήσεις γρήγορα εκφράσεις Unison σε "watch expressions". Στο αρχείο σου με κατάληξη .u, ξεκίνα μια γραμμή με > και γράψε μια έκφραση στα δεξιά.
> myFunction 42 "hi"
Ο UCM θα δείξει τα αποτελέσματα της αξιολόγησης της έκφρασης μόλις αποθηκεύσεις το αρχείο. Αυτό μπορεί να σου φανεί χρήσιμο όταν αντιμετωπίζεις προβλήματα με τις υλοποιήσεις των ασκήσεών σου.
Για μια πιο εμπεριστατωμένη ροή εργασίας στο Exercism, ορίστε ένα βίντεο με αναλυτική παρουσίαση της υλοποίησης και της δοκιμής ενός προβλήματος στο Exercism.
Το βίντεο με την παρουσίαση δείχνει τη ροή εργασίας για την παλαιότερη έκδοση της Unison. Δες τη νέα ροή εργασίας εδώ με τη νέα ροή εργασίας του έργου.
Μια βάση κώδικα Unison οργανώνεται σε "χώρους ονομάτων". Οι χώροι ονομάτων λειτουργούν λίγο σαν καταλόγους σε ένα σύστημα αρχείων, μόνο που αντί για αρχεία περιέχουν τους τύπους και τις συναρτήσεις σου σε Unison. Οι διαδρομές των χώρων ονομάτων χωρίζονται με τελείες, .. Για παράδειγμα, μπορούμε να αναφερθούμε στον χώρο ονομάτων Text μέσα στον χώρο ονομάτων base ως base.Text.
Σου προτείνουμε, για κάθε άσκηση που ολοκληρώνεις, να δημιουργείς έναν χώρο ονομάτων ή να κάνεις cd μέσα σε έναν.
Η σύνταξη της Unison για τη διαχείριση και τον προσδιορισμό εισαγωγών είναι η σύνταξη use. Για παράδειγμα, το use base.data.List θα φέρει στην εμβέλεια όλες τις συναρτήσεις του χώρου ονομάτων base.data.List. Αυτό μπορεί να φανεί χρήσιμο όταν χρησιμοποιείς μια συνάρτηση όπως η map σε μια List, η οποία πρέπει να ξεχωρίσει από άλλες συναρτήσεις map όπως η Optional.map. Μπορείς επίσης να εισάγεις συγκεκριμένες συναρτήσεις, γράφοντας μετά τον χώρο ονομάτων μια λίστα συναρτήσεων χωρισμένη με κενά που θα φέρεις στην εμβέλεια, όπως στο: use base.data.List tails head flatMap.
Μπορείς να χρησιμοποιήσεις τη σύνταξη use τόσο στο ανώτατο επίπεδο ενός αρχείου όσο και μέσα σε συναρτήσεις για να προσδιορίσεις εισαγωγές. Οι ρήτρες use σέβονται τους κανόνες της λεκτικής εμβέλειας, οπότε οι πιο βαθιά εμφωλευμένες εισαγωγές υπερισχύουν των λιγότερο εμφωλευμένων.
Η πρότυπη βιβλιοθήκη της Unison ονομάζεται base. Από προεπιλογή, κατεβαίνει μαζί με τις νέες βάσεις κώδικα Unison. Μπορείς να περιηγηθείς στις συναρτήσεις που έχεις διαθέσιμες για τις υλοποιήσεις σου μέσω του διαδικτυακού αποθετηρίου για κώδικα Unison, Unison share, ή μέσω του local codebase ui, ή αναζητώντας στον Unison Codebase Manager (UCM). Θα το περιγράψουμε παρακάτω.
Μπορείς να δεις μια πλήρη λίστα των εντολών του UCM γράφοντας help στον UCM, αλλά ορίστε μερικές συμβουλές και συμβάσεις.
Μπορείς να αναζητήσεις όρους με βάση το όνομα ή το πρόθεμα του χώρου ονομάτων στον UCM με την εντολή find, αλλά η find υποστηρίζει και αναζήτηση με βάση τον τύπο σε μια βάση κώδικα. Για να αναζητήσεις μια συνάρτηση με βάση την υπογραφή τύπου, γράψε find ακολουθούμενο από ένα κενό και μια άνω κάτω τελεία, π.χ. find : [a] -> [[a]].
Μπορείς να δεις τα περιεχόμενα ενός χώρου ονομάτων με την εντολή ls, για παράδειγμα ls base.data.List ή ls .exercism.helloWorld. Πολλές από τις εντολές του UCM δέχονται είτε σχετικές διαδρομές χώρου ονομάτων είτε πλήρως προσδιορισμένες διαδρομές χώρου ονομάτων. Οι πλήρως προσδιορισμένες διαδρομές ξεκινούν με μια . που αντιπροσωπεύει τη "ρίζα" της βάσης κώδικα σου.
Μετακινήσου μέσα στον UCM με την εντολή cd στη γραμμή εντολών. Αν ένας χώρος ονομάτων δεν υπάρχει, η cd θα δημιουργήσει έναν όταν μεταβείς σε αυτόν. Για να ανέβεις έναν χώρο ονομάτων, μπορείς να χρησιμοποιήσεις cd ...
Όταν φορτώνω τα tests, ο UCM δεν βρίσκει την υλοποίηση της άσκησής μου.
Σιγουρέψου ότι αποθηκεύεις το αρχείο stub στον επεξεργαστή κειμένου σου και κάνε update τους όρους στη βάση κώδικα σου πριν φορτώσεις τα tests.
Αντιμετωπίζω συγκρούσεις ονομάτων. Δεν μπορώ να έχω δύο όρους με το όνομα tests.
Μπορείς να έχεις δύο όρους με το ίδιο όνομα σε διαφορετικούς χώρους ονομάτων. Αν ολοκληρώνεις ασκήσεις του Exercism, συνιστάται να δημιουργείς ξεχωριστό χώρο ονομάτων για κάθε άσκηση, ώστε τα tests και τα stubs να είναι διαχωρισμένα από τα υπόλοιπα.
Τα tests μου περνούν τοπικά αλλά δεν περνούν τον test runner.
Συγγνώμη γι' αυτό! Πρώτα έλεγξε ότι οι εισαγωγές σου δεν αναφέρονται σε τίποτα άλλο εκτός από την πρότυπη βιβλιοθήκη, base, και τις συναρτήσεις που ορίζονται στο αρχείο scratch υπό δοκιμή. Αν ισχύει αυτό, ενημέρωσέ μας στο κανάλι #track-unison του Exercism στο Slack ή ανοίγοντας ένα issue στο αποθετήριο του track Unison.
Αν αντιμετωπίζεις οποιοδήποτε πρόβλημα, πες μας! 🙂