Διαδρομές
/
Haskell
Haskell
/
Ασκήσεις
/
Τα λαχταριστά λαζάνια του Lucian
Τα λαχταριστά λαζάνια του Lucian

Τα λαχταριστά λαζάνια του Lucian

Άσκηση εκμάθησης

Εισαγωγή

Σταθερές και συναρτήσεις

Τα προγράμματα Haskell αποτελούνται από ορισμούς και εκφράσεις.

Μια σταθερή τιμή ορίζεται με name = expression.

five = 5

six = 3 + 3

Οι συναρτήσεις ορίζονται με name parameters... = expression, με τις παραμέτρους να χωρίζονται μόνο με κενό.

add number1 number2 = number1 + number2

Η κλήση μιας συνάρτησης είναι επίσης μια έκφραση και γίνεται καθορίζοντας το όνομά της και περνώντας ορίσματα για κάθε παράμετρο της συνάρτησης, χωρισμένα με κενά, ακριβώς όπως στους ορισμούς συναρτήσεων.

five = add 2 3

Οι παρενθέσεις μπορούν να χρησιμοποιηθούν για να καθορίσουν τη σειρά με την οποία αξιολογείται μια έκφραση.

six = add 2 (1 * 4)

twelve = add 2 1 * 4

Εσοχή / κενά με σημασία

Η Haskell χρησιμοποιεί κενά και εσοχή για να καθορίσει τα όρια του κώδικα. Ο κώδικας που αποτελεί μέρος κάποιας έκφρασης πρέπει να έχει μεγαλύτερη εσοχή από την αρχή αυτής της έκφρασης.

  • Οι ορισμοί module, οι δηλώσεις import και οι ορισμοί συναρτήσεων ανώτατου επιπέδου πρέπει να ξεκινούν από την πιο αριστερή στήλη.
  • Αν μια έκφραση χωρίζεται σε πολλαπλές γραμμές, ο κώδικας που αποτελεί μέρος αυτής της έκφρασης πρέπει να έχει εσοχή κάτω από αυτή την έκφραση με τουλάχιστον ένα κενό.
  • Τα μέρη της έκφρασης που ομαδοποιούνται μαζί πρέπει να έχουν εσοχή με ίσο αριθμό κενών.
-- A function split over multiple lines, so subsequent lines must be indented
add number1 number2 =
    number1 + number2

https://en.wikibooks.org/wiki/Haskell/Indentation

Modules

Τα module εξάγουν συναρτήσεις. Αυτό σημαίνει ότι μπορείς να χρησιμοποιήσεις τις συναρτήσεις που το module κάνει διαθέσιμες στη δήλωση εξαγωγής του. Ένα module μπορεί επίσης να ορίσει συναρτήσεις μόνο για εσωτερική χρήση. Από προεπιλογή, οι συναρτήσεις που δεν εξάγονται ρητά δεν μπορούν να χρησιμοποιηθούν από έξω από το module.

Στην αρχή ενός module, καθορίζουμε το όνομα του module. Αν έχουμε ένα αρχείο με όνομα Calculator.hs, τότε πρέπει να ονομάσουμε το module μας Calculator. Έπειτα, καθορίζουμε τις συναρτήσεις που εξάγει και μετά από αυτό, μπορούμε να αρχίσουμε να γράφουμε τις συναρτήσεις. Οπότε θα ξεκινήσουμε με αυτό.

module Calculator ( add ) where

https://learnyouahaskell.github.io/modules#making-our-own-modules

Σχόλια

Ένα σχόλιο είναι κάποιο κείμενο μέσα στο αρχείο Haskell που δεν ερμηνεύεται ως κώδικας. Προορίζεται κυρίως για να το διαβάζεις εσύ και άλλοι προγραμματιστές. Υπάρχει μια απλή σύνταξη για σχόλια μίας γραμμής, βασισμένη στις διπλές παύλες. Σχόλια πολλαπλών γραμμών είναι επίσης δυνατά με το ζεύγος {- και -} ως οριοθέτες ανοίγματος και κλεισίματος.

-- a single line comment
-- another single line comment

{- a multiline comment
   spanning multiple lines
-}

Πηγές

Αυτή η εισαγωγή άσκησης δανείζεται εκτενώς από το Learn You a Haskell for Great Good!, υπό την Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License

Οδηγίες

Σε αυτή την άσκηση θα γράψεις λίγο κώδικα για να σε βοηθήσει να μαγειρέψεις υπέροχα λαζάνια από το αγαπημένο σου βιβλίο μαγειρικής.

Έχεις τρεις εργασίες, όλες σχετικές με τον χρόνο που περνάς μαγειρεύοντας τα λαζάνια.

1. Όρισε τον αναμενόμενο χρόνο στο φούρνο σε λεπτά

Όρισε τη σταθερά expectedMinutesInOven για να ελέγξεις πόσα λεπτά πρέπει να είναι τα λαζάνια στον φούρνο. Σύμφωνα με το βιβλίο μαγειρικής, ο αναμενόμενος χρόνος στο φούρνο σε λεπτά είναι 40:

expectedMinutesInOven
    --> 40

2. Υπολόγισε τον χρόνο προετοιμασίας σε λεπτά

Όρισε τη συνάρτηση preparationTimeInMinutes που παίρνει ως παράμετρο τον αριθμό των στρώσεων που πρόσθεσες στα λαζάνια και επιστρέφει πόσα λεπτά χρειάστηκες για να προετοιμάσεις τα λαζάνια, υποθέτοντας ότι κάθε στρώση σου παίρνει 2 λεπτά για προετοιμασία.

preparationTimeInMinutes 3
    --> 6

3. Υπολόγισε τον χρόνο που έχει περάσει σε λεπτά

Όρισε τη συνάρτηση elapsedTimeInMinutes που παίρνει δύο παραμέτρους: η πρώτη παράμετρος είναι ο αριθμός των στρώσεων που πρόσθεσες στα λαζάνια, και η δεύτερη παράμετρος είναι ο αριθμός των λεπτών που τα λαζάνια βρίσκονται στον φούρνο. Η συνάρτηση πρέπει να επιστρέφει πόσα λεπτά έχεις αφιερώσει στο μαγείρεμα των λαζανιών, που είναι το άθροισμα του χρόνου προετοιμασίας σε λεπτά και του χρόνου σε λεπτά που τα λαζάνια έχουν περάσει στον φούρνο αυτή τη στιγμή.

elapsedTimeInMinutes 3 20
    --> 26
Επεξεργασία μέσω GitHub Ο σύνδεσμος ανοίγει σε νέο παράθυρο ή καρτέλα
Haskell Exercism

Έτοιμος να ξεκινήσεις την άσκηση Τα λαχταριστά λαζάνια του Lucian;

Γράψου στο Exercism για να μάθεις και να κατακτήσεις Haskell με 107 ασκήσεις και πραγματική καθοδήγηση από ανθρώπους, όλα δωρεάν.