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

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

3
Чому ghci desugar типу списків та типів сімей? Чи можна це вибірково відключити?
Я намагаюся зробити типи ghci для моїх бібліотек якомога інтуїтивнішими, але у мене виникають багато труднощів при використанні більш розширених функцій типу. Скажімо, у мене цей файл у файлі: {-# LANGUAGE TypeFamilies #-} {-# LANGUAGE DataKinds #-} {-# LANGUAGE TypeOperators #-} import GHC.TypeLits data Container (xs::[*]) = Container Я завантажую …
93 haskell  types  ghci 

3
Впорядкування параметрів для використання каррі
Нещодавно я двічі переробляв код для того, щоб змінити порядок параметрів, тому що там було занадто багато коду, де хакі подобаються flipабо \x -> foo bar x 42відбуваються. При розробці підпису функції, які принципи допоможуть мені найкраще використовувати каррі?


9
Як працюють мови функціонального програмування?
Якщо функціональні мови програмування не можуть врятувати будь-який стан, як вони виконують такі прості речі, як читання вводу від користувача? Як вони "зберігають" вхідні дані (або зберігають будь-які дані щодо цього?) Наприклад: як би ця проста C річ переклалася на функціональну мову програмування, як Haskell? #include<stdio.h> int main() { int …

9
Який сенс "const" у Прелюдії Haskell?
Переглядаючи прелюдію Хаскелла, я бачу функцію const : const x _ = x Здається, я не можу знайти нічого відповідного щодо цієї функції. В чому справа? Хтось може навести приклад, де ця функція може використовуватися?
92 haskell 

3
mtl, трансформатори, monads-fd, monadLib та парадокс вибору
Hackage має кілька пакетів для монадних трансформаторів: mtl : Бібліотека трансформаторів монад трансформатори : Бетонні функторні та монадні трансформатори monads-fd : Класи монад , що використовують функціональні залежності monads-tf : Класи монад з використанням сімейств типів monadLib : колекція монадних трансформаторів. mtl-tf : Бібліотека трансформаторів Monad з використанням сімейств типів. …

3
Як працює цей фрагмент затуманеного коду Haskell?
Читаючи https://en.uncyclopedia.co/wiki/Haskell (і ігноруючи всі "образливі речі"), я натрапив на такий заплутаний код: fix$(<$>)<$>(:)<*>((<$>((:[{- thor's mother -}])<$>))(=<<)<$>(*)<$>(*2))$1 Коли я запускаю цей фрагмент коду в ghci(після імпорту Data.Functionта Control.Applicative), ghciдрукує список усіх повноважень з 2. Як працює цей шматок коду?
91 haskell 

3
Різниця між штатом, ST, IORef та MVar
Я працюю через Напишіть собі схему за 48 годин (я приблизно до 85 годин), і я дійшов до частини про Додавання змінних та призначень . У цій главі є великий концептуальний стрибок, і я би хотів, щоб це було зроблено у два етапи з гарним рефакторингом між ними, а не …

4
Посилення в Хаскелі
Хтось може сказати мені, чому Прелюдія Haskell визначає дві окремі функції для піднесення до степені (тобто ^і **)? Я думав, що система типу повинна була усунути подібне дублювання. Prelude> 2^2 4 Prelude> 4**0.5 2.0

15
Напишіть перекладача Haskell у Haskell
Класичною вправою програмування є написання перекладача Lisp / Scheme у Lisp / Scheme. Потужність повної мови може бути використана для створення перекладача для підмножини мови. Чи існує подібна вправа для Хаскелла? Я хотів би реалізувати підмножину Haskell, використовуючи Haskell як движок. Звичайно, це можна зробити, але чи є в мережі …

2
Паралельна картаM на масивах Repa
У своїй нещодавній роботі з Gibbs sampling, я широко використовував той, RVarякий, на мій погляд, забезпечує майже ідеальний інтерфейс для генерації випадкових чисел. На жаль, я не зміг використати Repa через неможливість використовувати монадичні дії на картах. Хоча однозначно монадичні карти неможливо розпаралелювати загалом, мені здається, що це RVarможе бути …

3
Який статус поточних реалізацій функціонального реактивного програмування?
Я намагаюся візуалізувати деякі прості автоматичні фізичні системи (такі як маятник, маніпулятори роботів тощо) у Haskell. Часто ці системи можна описати рівняннями типу df/dt = c*f(t) + u(t) де u(t)являє собою якийсь "інтелектуальний контроль". Ці системи, схоже, дуже добре вписуються в парадигму функціонального реактивного програмування. Так що я схопив книгу …

7
Які пункти суворості Хаскелла?
Всі ми знаємо (або повинні знати), що Хаскелл ледачий за замовчуванням. Ніщо не оцінюється, поки не повинно бути оцінено. Тож коли треба щось оцінювати? Є моменти, коли Хаскелл повинен бути суворим. Я називаю це "пунктами суворості", хоча цей конкретний термін не настільки поширений, як я думав. За моїми словами: Зменшення …

4
Чи має Haskell рекурсивно-рекурсивну оптимізацію?
Сьогодні я виявив команду "time" в unix і подумав, що використаю її, щоб перевірити різницю у виконанні між рекурсивними хвостами та нормальними рекурсивними функціями в Haskell. Я написав такі функції: --tail recursive fac :: (Integral a) => a -> a fac x = fac' x 1 where fac' 1 y …

5
Що такого поганого в лінивому введенні / виведенні?
Я загалом чув, що у виробничому коді слід уникати використання лінивих входів / виходів. Моє питання: чому? Чи коли-небудь нормально використовувати лінивий ввід-вивід за межами просто іграшок? І що робить альтернативи (наприклад, перелічувачі) кращими?

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