Запитання з тегом «haskell»

Haskell - це функціональна мова програмування, яка відрізняється сильним статичним введенням тексту, лінивою оцінкою, широкою підтримкою паралелізму та одночасності та унікальними можливостями абстрагування.

2
Роз'яснення екзистенціальних типів у Хаскеллі
Я намагаюся зрозуміти екзистенційні типи в Haskell і натрапив на PDF http://www.ii.uni.wroc.pl/~dabi/courses/ZPF15/rlasocha/prezentacja.pdf Будь ласка, виправте мої нижче розуміння, які я маю дотепер. Екзистенціальні типи, схоже, не цікавляться типом, який вони містять, але узор, що відповідає їм, говорить про те, що існує якийсь тип, який ми не знаємо, що це до …

1
Вивести Ord з кількісно обмеженими обмеженнями (для a. Ord a => Ord (fa))
З кількісно вираженими обмеженнями я можу вийти Eq (A f)просто добре? Однак, коли я намагаюся отримати Ord (A f), це не вдається. Я не розумію, як використовувати кількісні обмеження, коли клас обмеження має надклас. Як вивести Ord (A f)та інші класи, які мають суперкласи? > newtype A f = A …

1
Чому функція дужок Haskell працює у виконуваних файлах, але не вдається очистити тести?
Я бачу дуже дивна поведінка , де Хаскелл bracketфункція поводиться по- різному в залежності від того stack runчи stack testвикористовується. Розглянемо наступний код, де два вкладені дужки використовуються для створення та очищення Docker-контейнерів: module Main where import Control.Concurrent import Control.Exception import System.Process main :: IO () main = do bracket …

1
Чи є зручний спосіб використання шаблону як функції предиката?
Нещодавно я стикався з ситуаціями, коли мені потрібно передати предикатну функцію в іншу функцію, і досить часто логіка, яку я шукаю, по суті "чи відповідає це значення цій схемі?" Здається, що відповідність шаблонів вважається кращою у doрозуміннях декларацій, блоків та списків, але є ряд функцій, які беруть предикат a -> …
10 haskell 

1
Створення повністю залежної конкатенації
Приємний справжній факт конкатенації полягає в тому, що якщо я знаю будь-які дві змінні рівняння: a ++ b = c Тоді я знаю третє. Я хотів би зафіксувати цю ідею у власному стислі, тому я використовую функціональну залежність. {-# Language DataKinds, GADTs, FlexibleContexts, FlexibleInstances, FunctionalDependencies, KindSignatures, PolyKinds, TypeOperators, UndecidableInstances #-} …

4
Розуміння чистих функцій та побічних ефектів у Haskell - putStrLn
Нещодавно я почав вивчати Haskell, тому що хотів розширити свої знання з функціонального програмування, і мушу сказати, що дуже люблю його до цих пір. Зараз я використовую курс "Основи Haskell, частина 1" з питань плюралізму. На жаль, у мене є труднощі з розумінням однієї конкретної цитати лектора про наступний код …
10 haskell 

1
Знаходячи останній, але другий елемент списку, чому використання "останнього" є найшвидшим серед них?
Нижче наведено 3 функції, які знаходять останній, але другий елемент у списку. Той, хто використовує, last . initздається набагато швидшим, ніж решта. Я не можу зрозуміти, чому. Для тестування я використав список вхідних даних [1..100000000](100 мільйонів). Останній працює майже миттєво, тоді як інші займають кілька секунд. -- slow myButLast :: …
10 haskell 

3
Як я можу використовувати список фіксованої мінімальної довжини в повний та елегантний спосіб?
Зараз я маю справу з такою функцією: foo = (\(a:b:c:d:e:f:_) -> foobar a b c d e f) . (++ repeat def) Іншими словами, даючи список, він використовує перші шість елементів для чогось, і якщо список менше шести елементів, він використовує defяк очікування для відсутніх. Це загальна сума, але шматочки …


1
Нормальна форма Haskells слабкої голови
Я наткнувся на деякі дратівливі речі. Я знаю, що haskell працює зі слабкою головою нормальної форми (WHNF), і я знаю, що це. Введення наступного коду в ghci (я використовую команду: sprint, яка зводить вираз до WHNF, наскільки мені відомо.): let intlist = [[1,2],[2,3]] :sprint intlist дає intlist = _це робить …

1
Як "concatMap" з монопрохідної здатний "витягнути" загальний аргумент?
Я навчаюсь Haskell і робив просту програму з насінням БД для Yesod, коли натрапив на таку поведінку, яку мені важко зрозуміти: testFn :: Int -> Bool -> [Int] testFn a b = if b then replicate 10 a else [] Сесія GHCI в Yesod: $ :t concatMap testFn [3] concatMap …

5
Як зробити цей алгоритм лазерним, не повторюючи себе?
(Натхненний моєю відповіддю на це запитання .) Розглянемо цей код (він повинен знайти найбільший елемент, менший або рівний даному входу): data TreeMap v = Leaf | Node Integer v (TreeMap v) (TreeMap v) deriving (Show, Read, Eq, Ord) closestLess :: Integer -> TreeMap v -> Maybe (Integer, v) closestLess i …

2
Вкладені штати в Хаскелл
Я намагаюся визначити сімейство державних машин з дещо різними видами станів. Зокрема, більш "складні" державні машини мають стани, які утворюються шляхом об'єднання станів більш простих державних машин. (Це схоже на об'єктно-орієнтовану установку, коли об’єкт має кілька атрибутів, які також є об'єктами.) Ось спрощений приклад того, що я хочу досягти. data …

2
Типи сум - Чому в Haskell `show (Int | Double)` відрізняється від `(показати Int) | (показати подвійний) `
Чому вони не є рівнозначними? show $ if someCondition then someInt else some double і if someCondition then show someInt else show someDouble Я розумію, що якщо ви виділите if ... elseчастину в першому прикладі до виразу самостійно, то ви не можете представляти його тип анонімним типом суми, таким Int …

1
Що я можу зробити з callCC, що неможливо зробити з продовженням?
Я справді дуже боюся з розумінням callCC. Я отримую силу продовжень і використовую цю концепцію в деяких своїх проектах, щоб створити круті концепції. Але ніколи мені не потрібно було використовувати щось з більшими можливостями, ніж cont :: ((a->r)->r)-> Cont r a. Після його використання має багато сенсу, чому вони називають …

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.