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

11
Используйте Haskell как модули Prelude в модуле в raku

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

11
Как разложить монаду продолжения в левую и правую примыкания?

Как монаду состояния можно разложить на Product (слева - функтор) и Reader (справа - представимый). Есть ли способ разложить монаду продолжения? Ниже код моя попытка, которая не проверяет тип -- To form a -> (a -> k) -> k {-# LANGUAGE MultiParamTypeClasses, TypeOperators, InstanceSigs,...

10
Как я могу использовать список с фиксированной минимальной длиной полным и элегантным способом?

В настоящее время я имею дело с функцией, которая выглядит следующим образом: foo = (\(a:b:c:d:e:f:_) -> foobar a b c d e f) . (++ repeat def) Другими словами, для данного списка он использует первые шесть элементов для чего-то, и если список имеет длину менее шести элементов, он использует defв...

10
При нахождении последнего, но второго элемента списка, почему использование `last` является самым быстрым среди них?

Ниже приведены 3 функции, которые находят последний, но второй элемент в списке. Тот, кто использует, last . initкажется намного быстрее, чем остальные. Я не могу понять, почему. Для тестирования я использовал входной список [1..100000000](100 миллионов). Последний запускается почти мгновенно,...

10
Понимание чистых функций и побочных эффектов в Haskell - putStrLn

Недавно я начал изучать Haskell, потому что хотел расширить свои знания по функциональному программированию, и я должен сказать, что я действительно люблю это до сих пор. В настоящее время я использую ресурс «Основы Haskell, часть 1» по Pluralsight. К сожалению, мне сложно понять одну конкретную...

10
Создание полностью зависимой конкатенации

Хороший факт о конкатенации заключается в том, что если я знаю какие-либо две переменные в уравнении: a ++ b = c Тогда я знаю третий. Я хотел бы запечатлеть эту идею в моем собственном конкатате, поэтому я использую функциональную зависимость. {-# Language DataKinds, GADTs, FlexibleContexts,...

10
Есть ли удобный способ использовать шаблон в качестве функции предиката?

Недавно я сталкивался с ситуациями, когда мне нужно передать предикатную функцию в другую функцию, и довольно часто логика, которую я ищу, по существу "соответствует ли это значение этому шаблону?" Похоже, что сопоставление с образцом предпочтительнее в объявлениях, doблоках и списках, но есть ряд...

10
Почему функция скобок Haskell работает в исполняемых файлах, но не может быть очищена в тестах?

Я вижу очень странное поведение, когда bracketфункция Haskell ведет себя по-разному в зависимости от того, используется ли она stack runили нет stack test. Рассмотрим следующий код, в котором две вложенные скобки используются для создания и очистки контейнеров Docker: module Main where import...

10
Получите Ord с количественными ограничениями (для a. Ord a => Ord (fa))

С количественными ограничениями я могу получить Eq (A f)просто отлично? Однако, когда я пытаюсь вывести Ord (A f), это терпит неудачу. Я не понимаю, как использовать количественные ограничения, когда класс ограничений имеет суперкласс. Как я могу получить Ord (A f)и другие классы, которые имеют...

10
Разъяснение экзистенциальных типов в Haskell

Я пытаюсь понять экзистенциальные типы в Haskell и наткнулся на PDF http://www.ii.uni.wroc.pl/~dabi/courses/ZPF15/rlasocha/prezentacja.pdf Пожалуйста, исправьте мои следующие понимания, которые у меня есть до сих пор. Экзистенциальные типы, кажется, не интересуются типом, который они содержат, но...

10
Суммирование по спискам произвольных уровней вложенности в F #

Я пытаюсь создать функцию F #, которая будет возвращать сумму списка ints произвольной вложенности. То есть. это будет работать для a list<int>, a list<list<int>>и a list<list<list<list<list<list<int>>>>>>. В Хаскеле я бы написал что-то вроде:...

9
Какие знания или обучение необходимы для того, чтобы кто-то записал определение сгиба, как это? [закрыто]

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

9
Как контролировать масштабную инвариантность?

Я пытаюсь составить несколько диаграмм в виде таблицы. Я думаю, что это называется «индексная печать» , фотографы делают это, когда им приходится просматривать много фотографий одновременно. Во всяком случае, это код: main :: IO () main = mainWith @(Diagram B) $ (tile . fmap renderOne) examples...

9
Что я могу сделать с callCC, что нельзя сделать с помощью cont?

Я действительно очень борюсь с пониманием callCC. Я получаю силу от Continuations и использую концепцию в некоторых своих проектах для создания классных концепций. Но мне никогда не приходилось использовать что-то с большими возможностями, чем cont :: ((a->r)->r)-> Cont r a. После его...

9
Типы сумм - почему в Haskell `show (Int | Double)` отличается от `(show Int) | (показать дубль) `

Почему они не эквивалентны? show $ if someCondition then someInt else some double а также if someCondition then show someInt else show someDouble Я понимаю, что если вы изолируете if ... elseчасть в первом примере от выражения, то вы не сможете представить его тип анонимным типом суммы Int |...

9
Вложенные состояния в Haskell

Я пытаюсь определить семейство государственных машин с несколько различными типами состояний. В частности, более «сложные» конечные автоматы имеют состояния, которые формируются путем объединения состояний более простых конечных автоматов. (Это похоже на объектно-ориентированную настройку, где...

9
Как сделать этот алгоритм более ленивым, не повторяя себя?

(Вдохновлен моим ответом на этот вопрос .) Рассмотрим этот код (он должен найти самый большой элемент, который меньше или равен заданному входу): data TreeMap v = Leaf | Node Integer v (TreeMap v) (TreeMap v) deriving (Show, Read, Eq, Ord) closestLess :: Integer -> TreeMap v -> Maybe...

9
Как «concatMap» из mono-traversable способен «вытянуть» общий аргумент?

Я изучаю Haskell и делал простую программу DB-seed для Yesod, когда наткнулся на это поведение, которое мне трудно понять: testFn :: Int -> Bool -> [Int] testFn a b = if b then replicate 10 a else [] Сессия Йесод GHCI: $ :t concatMap testFn [3] concatMap testFn [3] :: Bool -> [Int] $...

9
Являются ли все контейнеры фиксированного размера сильными моноидальными функторами и / или наоборот?

Класс Applicativeтипов представляет слабые моноидальные функторы, которые сохраняют декартову моноидальную структуру в категории типизированных функций. Другими словами, учитывая канонические изоморфизмы, свидетельствующие о том, что (,)образуется моноидальная структура: -- Implementations left to...