map :: (a -> b) -> [a] -> [b] fmap :: Functor f => (a -> b) -> f a -> f b liftM :: Monad m => (a -> b) -> m a -> m b Почему у нас есть три разные функции, которые по сути делают одно и то же?...
map :: (a -> b) -> [a] -> [b] fmap :: Functor f => (a -> b) -> f a -> f b liftM :: Monad m => (a -> b) -> m a -> m b Почему у нас есть три разные функции, которые по сути делают одно и то же?...
Я только начал новый проект на Haskell и хотел с самого начала организовать хороший рабочий процесс тестирования. Похоже, что в Haskell есть множество отличных и уникальных инструментов для тестирования и множество различных способов их интеграции. Я изучил: HUnit Быстрая проверка жим лежа HPC...
Как можно было бы кодировать этот кусок кода C в файле .chs, чтобы c2hs мог преобразовать его во что-то относительно хорошее? typedef enum { MONOME_BUTTON_UP = 0x00, MONOME_BUTTON_DOWN = 0x01, MONOME_ENCODER_DELTA = 0x02, MONOME_ENCODER_KEY_UP = 0x03, MONOME_ENCODER_KEY_DOWN = 0x04, MONOME_TILT =...
В F # |>довольно часто используется оператор конвейерной передачи ,. Однако в Haskell я видел только использование композиции функций (.). Я понимаю, что они связаны , но есть ли языковая причина, по которой конвейерная передача не используется в Haskell, или это что-то еще?...
Я не уверен, что вызывает эту проблему, но в проекте, который я создаю, компилятор тратит часы на компиляцию модуля. Общий размер моей кодовой базы составляет 352 КБ, но ни один из модулей не превышает 10 КБ. Я использую собственный порт, но это очень тривиально; Я просто увлекаюсь Date.now()этим....
Пытаясь отладить проблему в моей программе (2 круга с одинаковым радиусом рисуются для разных размеров с помощью Gloss *), я наткнулся на странную ситуацию. В моем файле, который обрабатывает объекты, у меня есть следующее определение для Player: type Coord = (Float,Float) data Obj = Player { oPos...
В чистых функциональных языках, таких как Haskell, есть ли алгоритм, позволяющий получить обратную функцию (редактировать), если она биективна? И есть ли какой-то особый способ запрограммировать вашу функцию?...
Я пытаюсь и не могу найти эту traverseфункцию Data.Traversable. Я не вижу в этом смысла. Поскольку я пришел из императивного фона, может ли кто-нибудь объяснить мне это с точки зрения императивного цикла? Псевдокод был бы очень признателен. Спасибо....
Везде, где я пробовал пользоваться map, fmapтоже работает. Почему создатели Haskell почувствовали необходимость в mapфункции? Разве это не может быть то, что сейчас известно как язык, fmapи что fmapего можно удалить?...
Что такое индексированная монада и мотивация этой монады? Я читал, что это помогает отслеживать побочные эффекты. Но подпись типа и документация никуда меня не ведут. Какой был бы пример того, как это может помочь отслеживать побочные эффекты (или любой другой допустимый пример)?...
Как я могу получить доступ к списку по индексу в Haskell, аналогично этому коду C? int a[] = { 34, 45, 56 }; return a[1];
Я новичок в функциональном программировании и недавно учился на Learn You a Haskell , но когда я прочитал эту главу , я застрял в программе ниже: import Control.Monad.Writer logNumber :: Int -> Writer [String] Int logNumber x = Writer (x, ["Got number: " ++ show x]) multWithLog :: Writer...
absurdФункция Data.Voidимеет следующую подпись, где Voidявляется логически необитаемым типом экспортируемого этого пакетом: -- | Since 'Void' values logically don't exist, this witnesses the logical -- reasoning tool of \"ex falso quodlibet\". absurd :: Void -> a Я знаю достаточно логики, чтобы...
Можно ли написать модуль в Haskell, который реэкспортирует модуль в дополнение к экспорту всего, что видно внутри? Рассмотрим следующий модуль: module Test where import A f x = x Этот модуль экспортирует все, что определено внутри, поэтому он экспортирует, fно не реэкспортирует ничего,...
Читая эту классическую статью , я зацикливаюсь на параморфизмах. К сожалению, раздел довольно тонкий, и на странице Википедии ничего не сказано. Мой перевод на Haskell: para :: (a -> [a] -> b -> b) -> b -> [a] -> b para f base = h where h [] = base h (x:xs) = f x xs (h xs) Но...
Каковы возможности, если таковые имеются, для получения офлайн-документации для основных библиотек Haskell (и, возможно, большего количества)? Иногда я беру свой ноутбук в кофейню, где нет Wi-Fi, и было бы неплохо иметь что-то вроде Hoogle, но для автономного использования....
Просматривая Haskell Prelude, я вижу функцию const : const x _ = x Я не могу найти ничего подходящего относительно этой функции. В чем смысл? Кто-нибудь может привести пример, где можно использовать эту функцию?...
Как я могу очистить экран терминала после того, как мой пользователь выбрал опцию в меню моего приложения?
Я дважды недавно реорганизовал код, чтобы изменить порядок параметров, потому что было слишком много кода, где хаки вроде flipили \x -> foo bar x 42происходили. Какие принципы помогут мне лучше всего использовать каррирование при разработке сигнатуры функции?...
Я создал демона, который использовал очень примитивную форму ipc(telnet и отправлял строку, содержащую определенные слова в определенном порядке). Я отключился и теперь использую JSONдля передачи сообщений на Yesodсервер. Тем не менее, в моем дизайне мне действительно нравились некоторые вещи, и я...