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

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

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

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

1
Напечатайте роли и сбивающее с толку поведение `coerce`
У меня есть тип, Id aи я пытаюсь предотвратить случайное принуждение, например, Id Doubleк Id Int. Если я правильно понимаю роли типов, следующее не должно компилироваться. {-# LANGUAGE RoleAnnotations #-} import Data.Coerce (coerce) type role Id nominal newtype Id a = Id String badKey :: Id Int badKey = coerce …
11 haskell  roles  coerce 

2
Суммирование по спискам произвольных уровней вложенности в F #
Я пытаюсь создать функцию F #, которая будет возвращать сумму списка ints произвольной вложенности. То есть. это будет работать для a list<int>, a list<list<int>>и a list<list<list<list<list<list<int>>>>>>. В Хаскеле я бы написал что-то вроде: class HasSum a where getSum :: a -> Integer instance HasSum Integer where getSum = id instance …
10 haskell  f# 

2
Разъяснение экзистенциальных типов в Haskell
Я пытаюсь понять экзистенциальные типы в 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 = …

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

1
Есть ли удобный способ использовать шаблон в качестве функции предиката?
Недавно я сталкивался с ситуациями, когда мне нужно передать предикатную функцию в другую функцию, и довольно часто логика, которую я ищу, по существу "соответствует ли это значение этому шаблону?" Похоже, что сопоставление с образцом предпочтительнее в объявлениях, doблоках и списках, но есть ряд функций, которые принимают предикат a -> Bool, …
10 haskell 

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

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

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

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


1
Почему «трюк с ограничениями» не работает в этом экземпляре HasField, заданном вручную?
У меня есть этот (по общему признанию странный) код, который использует lens и GHC.Records : {-# LANGUAGE DataKinds, PolyKinds, FlexibleInstances, UndecidableInstances #-} {-# LANGUAGE MultiParamTypeClasses #-} {-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE TypeApplications #-} {-# LANGUAGE TypeFamilies #-} module Main where import Control.Lens import GHC.Records data Glass r = Glass …

1
Неявное приведение статического типа (приведение) в Haskell
проблема Рассмотрим следующую проблему дизайна в Haskell. У меня есть простой, символический EDSL, в котором я хочу выразить переменные и общие выражения (многомерные полиномы), такие как x^2 * y + 2*z + 1. Кроме того, я хочу выразить некоторые символические уравнения над выражениями, скажем x^2 + 1 = 1, а …

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.