Програми на 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
У цій вправі ми напишемо трохи коду, який допоможе приготувати чудову лазанью з улюбленої кулінарної книги.
Перед нами три завдання, і всі вони стосуються часу, витраченого на приготування лазаньї.
Визначте сталу expectedMinutesInOven, щоб перевірити, скільки хвилин лазанья має бути в духовці. Згідно з кулінарною книгою, очікуваний час запікання становить 40 хвилин:
expectedMinutesInOven
--> 40
Визначте функцію preparationTimeInMinutes, яка приймає як параметр кількість шарів, доданих до лазаньї, і повертає, скільки хвилин ми витратили на підготовку лазаньї, вважаючи, що на кожен шар іде 2 хвилини.
preparationTimeInMinutes 3
--> 6
Визначте функцію elapsedTimeInMinutes, яка приймає два параметри: першим параметром є кількість шарів, доданих до лазаньї, а другим - кількість хвилин, які лазанья вже провела в духовці. Функція має повертати, скільки хвилин ми витратили на приготування лазаньї, тобто суму часу підготовки у хвилинах і часу в хвилинах, який лазанья провела в духовці на цей момент.
elapsedTimeInMinutes 3 20
--> 26