Треки
/
Haskell
Haskell
/
Вправи
/
Смачнюща лазанья Люсіана
Смачнюща лазанья Люсіана

Смачнюща лазанья Люсіана

Навчальна вправа

Вступ

Константи та функції

Програми на 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 використовує пробіли та відступи, щоб задавати межі коду. Код, який є частиною якогось виразу, має бути відсунутий далі, ніж початок цього виразу.

  • Визначення модуля, імпорту та функцій верхнього рівня мають починатися з найлівішого стовпця.
  • Якщо вираз розбито на кілька рядків, код, який є частиною цього виразу, потрібно відсунути під цим виразом щонайменше на один пробіл.
  • Частини виразу, згруповані разом, мають бути відсунуті на однакову кількість пробілів.
-- A function split over multiple lines, so subsequent lines must be indented
add number1 number2 =
    number1 + number2

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

Модулі

Модулі експортують функції. Це означає, що ми можемо використовувати функції, які модуль надає у своєму списку експорту. Модуль також може визначати функції лише для внутрішнього використання. Типово функції, які явно не експортовано, не можна використати ззовні модуля.

На початку модуля ми вказуємо назву модуля. Якщо у нас є файл Calculator.hs, то модуль слід назвати 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

Час розпочати Смачнюща лазанья Люсіана?

Зареєструйтеся на Exercism, щоб вивчати й опановувати Haskell, а також 107 вправ та справжнє наставництво від людей, і все це безкоштовно.