Вопросы с тегом «haskell»

93
Почему ghci desugar использует списки типов и семейства типов? Можно ли это выборочно отключить?

Я пытаюсь сделать типы, отображаемые ghci для моих библиотек, максимально интуитивно понятными, но я сталкиваюсь с множеством трудностей при использовании более продвинутых функций типов. Допустим, у меня есть этот код в файле: {-# LANGUAGE TypeFamilies #-} {-# LANGUAGE DataKinds #-} {-# LANGUAGE...

92
Как работают языки функционального программирования?

Если языки функционального программирования не могут сохранять какое-либо состояние, как они делают простые вещи, такие как чтение ввода от пользователя? Как они «хранят» ввод (или хранят какие-либо данные в этом отношении?) Например: как эта простая вещь C может быть переведена на функциональный...

91
mtl, трансформаторы, monads-fd, monadLib и парадокс выбора

В Hackage есть несколько пакетов для преобразователей монад: mtl : библиотека преобразователей монад трансформаторы : Конкретный функтор и монадные трансформаторы monads-fd : классы монад, использующие функциональные зависимости monads-tf : классы монад, использующие семейства типов monadLib :...

91
Разница между состоянием, ST, IORef и MVar

Я работаю над написанием схемы за 48 часов (у меня около 85 часов), и я дошел до части о добавлении переменных и назначений . В этой главе есть большой концептуальный скачок, и я бы хотел, чтобы он был сделан в два этапа с хорошим рефакторингом между ними, а не сразу к окончательному решению. Тем...

91
Возведение в степень в Haskell

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

90
Напишите интерпретатор Haskell на Haskell

Классическим упражнением в программировании является написание интерпретатора Lisp / Scheme на Lisp / Scheme. Возможности полного языка можно использовать для создания интерпретатора для подмножества языка. Есть ли подобное упражнение для Haskell? Я хотел бы реализовать подмножество Haskell,...

90
Каковы точки строгости Haskell?

Все мы знаем (или должны знать), что Haskell по умолчанию ленив. Ничего не оценивается до тех пор, пока не будет оценено. Итак, когда нужно что-то оценивать? Есть моменты, в которых Haskell должен быть строгим. Я называю это «точками строгости», хотя этот конкретный термин не так широко...

90
Параллельный mapM на массивах Repa

В своей недавней работе с Gibbs sampling, я делал большую пользу из RVarкоторых, на мой взгляд, обеспечивает почти идеальный интерфейс для генерации случайных чисел. К сожалению, мне не удалось использовать Repa из-за невозможности использовать монадические действия на картах. Хотя очевидно, что...

90
Как работает этот запутанный код Haskell?

Читая https://en.uncyclopedia.co/wiki/Haskell (и игнорируя все «оскорбительные» вещи), я наткнулся на следующий фрагмент запутанного кода: fix$(<$>)<$>(:)<*>((<$>((:[{- thor's mother -}])<$>))(=<<)<$>(*)<$>(*2))$1 Когда я запускаю этот фрагмент кода...

90
Есть ли в Haskell хвостовая рекурсивная оптимизация?

Сегодня я обнаружил команду time в unix и подумал, что буду использовать ее, чтобы проверить разницу во времени выполнения между хвостовой рекурсивной и нормальной рекурсивной функцией в Haskell. Я написал следующие функции: --tail recursive fac :: (Integral a) => a -> a fac x = fac' x 1...

90
Каков статус текущих реализаций функционального реактивного программирования?

Я пытаюсь визуализировать некоторые простые автоматические физические системы (такие как маятник, манипуляторы и т. Д.) В Haskell. Часто эти системы можно описать уравнениями типа df/dt = c*f(t) + u(t) где u(t)представляет собой своего рода «интеллектуальное управление». Эти системы очень хорошо...

89
Что плохого в Lazy I / O?

Обычно я слышал, что производственный код не должен использовать ленивый ввод-вывод. У меня вопрос, почему? Можно ли когда-нибудь использовать ленивый ввод-вывод вне игры? И что делает альтернативы (например, счетчики) лучше?...

88
Почему проще написать компилятор на функциональном языке? [закрыто]

Закрыто . Этот вопрос основан на мнении . В настоящее время он не принимает ответы. Хотите улучшить этот вопрос? Обновите вопрос, чтобы на него можно было ответить с помощью фактов и цитат, отредактировав этот пост . Закрыт 2 года назад . Уточните этот вопрос Я очень долго думал над этим вопросом,...

88
Когда полезны высшие родственные типы?

Некоторое время я занимаюсь разработкой на F #, и мне это нравится. Однако одного модного слова, которого, как мне известно, не существует в F #, является высокодородные типы. Я читал материал о высокородных типах и думаю, что понимаю их определение. Я просто не знаю, почему они полезны. Может ли...

87
Как использовать исправление и как оно работает?

Меня немного смутила документация для fix(хотя я думаю, что понимаю, что она должна делать сейчас), поэтому я посмотрела исходный код. Это сбило меня с толку: fix :: (a -> a) -> a fix f = let x = f x in x Как именно это возвращает фиксированную точку? Решил опробовать в командной строке:...

87
Почему этот код Haskell работает медленнее с -O?

Этот фрагмент кода Haskell работает намного медленнее -O, но не -Oдолжен быть опасным . Кто-нибудь может сказать мне, что случилось? Если это важно, то это попытка решить эту проблему , и она использует двоичный поиск и постоянное дерево сегментов: import Control.Monad import Data.Array data Node...

87
Что является комбинаторно-логическим эквивалентом интуиционистской теории типов?

Недавно я закончил университетский курс, посвященный Haskell и Agda (зависимый типизированный функциональный язык программирования), и мне было интересно, можно ли заменить в них лямбда-исчисление комбинаторной логикой. В Haskell это кажется возможным с использованием комбинаторов S и K, что...

86
Оператор точки в Haskell: требуется дополнительное объяснение

Я пытаюсь понять, что делает оператор точка в этом коде Haskell: sumEuler = sum . (map euler) . mkList Полный исходный код ниже. Мое понимание Оператор точки принимает две функции, sumа также результат map eulerи результат в mkListкачестве входных данных. Но sumразве функция не является аргументом...

86
Осиротевшие экземпляры в Haskell

При компиляции моего приложения Haskell с -Wallопцией GHC жалуется на потерянные экземпляры, например: Publisher.hs:45:9: Warning: orphan instance: instance ToSElem Result Класс типа ToSElemне мой, он определен HStringTemplate . Теперь я знаю, как это исправить (переместить объявление экземпляра в...