#команди — Public Fediverse posts
Live and recent posts from across the Fediverse tagged #команди, aggregated by home.social.
-
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 #константи