#константи — Public Fediverse posts
Live and recent posts from across the Fediverse tagged #константи, aggregated by home.social.
-
CW: Константна змінна
Дуже багато людей і не тільки іноді кажуть про константні змінні, хоча це сполучення не можливе. Слова змінна та константа перечать один одному. Мабуть, це спричинено поясненням що таке змінна у дуже багатьох курсах програмування.
Змінна - це місце у памʼяті де ми можемо зберігати дані.
Це визначення хоч і правильне, але не завершене. До нього потрібно додати те що ми можемо їх змінювати.
Змінна - це місце у памʼяті де ми можемо зберігати дані з можливістю перезаписувати їх.
#програмування #змінна #змінні #константа #константи #programming #variable #constant
-
CW: Типи в :haskell:
Haskell є строго статично типізованою мовою програмування, але з можливістю автоматичного виведення типів. В усіх наших попередніх програмах ми ніде не вказували типи, компілятор чи інтерпретатор їх вивів автоматично, полегшивши нам написання коду. Але не завжди це у нього буде вдаватись, і взагалі знати типи даних обовʼязково потрібно.
Статично типізований означає що перевірка типів відбувається на етапі компіляції, а не виконання. Строга типізація означає що не явного приведення типів не відбувається, можливо тільки явно вказувати приведення.
Щоб дізнатись тип функції чи оператора в інтерпретаторі
ghciпотрібно використати команду інтерпретатораtype. Всі команди інтерпретатора починаються з символу двокрапки. Виглядає це так:type x.let x = 10 :type xКоманди інтерпретатора можна скорочувати до першої літери, але тільки якщо не відбувається колізії. Тому
:typeі:tодне і теж.Ця команда поверне нам
x :: Num p => pУ цьому рядку оператор
::схожий на=, але працює з типами, а не значеннями. За допомогою нього ми зможемо самі вказувати типи. Зліва від нього знаходиться вираз, а з права його тип. Що означає права частина у цьому випадку ми розберемо згодом, а зараз подивимось на те як уточнювати тип самостійно.let x = 10 :: IntТут ми явно вказуємо тип за допомоги оператора типізації. Тепер команда типу
:t xповерне нам такеx :: Int.Є шість основних, фундаментальних типів.
- Bool - Логічний (True, False)
- Char - Символьний ('\0' - '\1114111')
- Int - Знаковий цілочисельний (-9223372036854775808 - 9223372036854775807)
- Integer - Знаковий цілочисельний без обмежень)
- Float - Знаковий дробовий
- Double - Знаковий дробовий з подвійною точністю
Перейдімо від констант до функцій. Для прикладу візьмемо стандартну функцію
not. Вона приймаєboolі повертає інвертоване значення типуbool.not True -- Поверне False not False -- Поверне TrueТепер розберемо його тип
:t not not :: Bool -> BoolУ цьому випадку функція приймає один аргумент і саме його тип вказаний перед стрілкою, а після неї тип повернення. Але якщо буде кілька вхідних аргументів, то вони всі будуть переліченні через стрілки.
Для прикладу візьмемо оператор
&&. Щоб подивитись тип оператора потрібно взяти його у душки:t (&&).(&&) :: Bool -> Bool -> BoolПерші два
Boolце вхідні аргументи, а останній тип повернення. Саме через такі типи працює часткове застосування функцій. Візьмем(&& True)і побачимо що тип його(&& True) :: Bool -> Bool. Розташування аргументу значення не має.#програмування #haskell #типи #типізація #статична #строга #фукції #оператори #інтерпретатор #ghci #команди #type #types #typing #static #константи
-
CW: Типи в :haskell:
Haskell є строго статично типізованою мовою програмування, але з можливістю автоматичного виведення типів. В усіх наших попередніх програмах ми ніде не вказували типи, компілятор чи інтерпретатор їх вивів автоматично, полегшивши нам написання коду. Але не завжди це у нього буде вдаватись, і взагалі знати типи даних обовʼязково потрібно.
Статично типізований означає що перевірка типів відбувається на етапі компіляції, а не виконання. Строга типізація означає що не явного приведення типів не відбувається, можливо тільки явно вказувати приведення.
Щоб дізнатись тип функції чи оператора в інтерпретаторі
ghciпотрібно використати команду інтерпретатораtype. Всі команди інтерпретатора починаються з символу двокрапки. Виглядає це так:type x.let x = 10 :type xКоманди інтерпретатора можна скорочувати до першої літери, але тільки якщо не відбувається колізії. Тому
:typeі:tодне і теж.Ця команда поверне нам
x :: Num p => pУ цьому рядку оператор
::схожий на=, але працює з типами, а не значеннями. За допомогою нього ми зможемо самі вказувати типи. Зліва від нього знаходиться вираз, а з права його тип. Що означає права частина у цьому випадку ми розберемо згодом, а зараз подивимось на те як уточнювати тип самостійно.let x = 10 :: IntТут ми явно вказуємо тип за допомоги оператора типізації. Тепер команда типу
:t xповерне нам такеx :: Int.Є шість основних, фундаментальних типів.
- Bool - Логічний (True, False)
- Char - Символьний ('\0' - '\1114111')
- Int - Знаковий цілочисельний (-9223372036854775808 - 9223372036854775807)
- Integer - Знаковий цілочисельний без обмежень)
- Float - Знаковий дробовий
- Double - Знаковий дробовий з подвійною точністю
Перейдімо від констант до функцій. Для прикладу візьмемо стандартну функцію
not. Вона приймаєboolі повертає інвертоване значення типуbool.not True -- Поверне False not False -- Поверне TrueТепер розберемо його тип
:t not not :: Bool -> BoolУ цьому випадку функція приймає один аргумент і саме його тип вказаний перед стрілкою, а після неї тип повернення. Але якщо буде кілька вхідних аргументів, то вони всі будуть переліченні через стрілки.
Для прикладу візьмемо оператор
&&. Щоб подивитись тип оператора потрібно взяти його у душки:t (&&).(&&) :: Bool -> Bool -> BoolПерші два
Boolце вхідні аргументи, а останній тип повернення. Саме через такі типи працює часткове застосування функцій. Візьмем(&& True)і побачимо що тип його(&& True) :: Bool -> Bool. Розташування аргументу значення не має.#програмування #haskell #типи #типізація #статична #строга #фукції #оператори #інтерпретатор #ghci #команди #type #types #typing #static #константи