Описание тега foldable

Складные - это класс структур данных, которые можно свернуть до итогового значения.
1 ответ

Универсальная конвертация контейнеров? если из складного в альтернативу?

За instance Alternative [], (<|>) = (++), Так я считала (<|>) как своего рода монтажное устройство, в результате чего получается практически универсальный контейнерный преобразователь: -- (<|>) = generalization of (++) (<|) :: A…
08 фев '18 в 08:14
0 ответов

Эмулируйте "горящие мосты" на GHC 7.8

Существует ли простой способ эмулировать предложение о сжигании мостов (также называемое предложением складной / проходимой части GHC 7.10) на GHC 7.8 или более ранней версии? Некоторые аспекты действительно трудно подражать. Это включает в себя изм…
03 июл '15 в 16:53
1 ответ

Различные типы в функции суммы

Я новичок в Хаскеле, так что это может быть глупым вопросом. Я читаю книгу, где написано :type sum должен показать sum :: (Num a) => [a] -> a, Вместо этого сообщение sum :: (Num a, Foldable t) => t a -> a, Как я видел в https://www.haske…
15 ноя '16 в 18:18
1 ответ

Нет экземпляра для складного, вытекающего из длины внутри лямбды

Первый вопрос здесь и полностью нуб на haskell, так что будьте добры со мной:) Я играл с вопросом № 6 из этого упражнения на Haskell и в конце концов пришли к решению (или что-то подобное я надеюсь) с этим кодом combinations gr lis = filter clean $ …
16 ноя '16 в 20:54
1 ответ

Tree Functor и Foldable, но с узлами. Есть ли какие-либо обобщения по этому поводу?

data Tree t = Empty | Node t (Tree t) (Tree t) Мы можем создать экземпляр Functor и использовать fmap :: (t -> a) -> Tree t -> Tree a Но что, если вместо (t -> a) я хочу (Tree t -> a), чтобы я мог иметь доступ ко всему (Node t), а не только…
30 авг '15 в 10:10
1 ответ

Складная "foldMap", которая принимает частичную функцию: foldCollect?

Скажем, у меня есть следующий объект: case class MyFancyObject(a: String, b: Int, c : Vector[String]) И что мне нужно, чтобы получить один Vector[String] содержащий все буквы "с", которые соответствуют данной частичной функции. Например: val xs = Ve…
3 ответа

traverse_ эквивалент в Python?

В Хаскеле мы имеем traverse_, функция, которая работает на Foldable типы, чтобы сложить структуру с аппликативной функцией, отбрасывая любой результат: traverse_ :: (Applicative f,Foldable t) => (a -> f b) -> t a -> f () Так, например, м…
05 янв '16 в 09:27
6 ответов

Как я могу сбросить с государством в Haskell?

У меня есть простая функция (фактически используется для некоторых задач проекта Euler). Превращает список цифр в десятичное число. fromDigits :: [Int] -> Integer fromDigits [x] = toInteger x fromDigits (x:xs) = (toInteger x) * 10 ^ length xs + f…
15 окт '14 в 19:06
1 ответ

Почему `fmap sum Just` проверяет тип?

Мы знаем fmap является fmap :: Functor f => (a -> b) -> f a -> f b а также sum является sum :: (Num a, Foldable t) => t a -> a, но код ниже смущают меня. > :t (fmap sum Just) (fmap sum Just) :: Num b => b -> b > fmap su…
10 апр '17 в 03:46
1 ответ

Как Foldable знает реализацию mappend

Я изучаю Haskell с помощью " http://learnyouahaskell.com/ ". Я следую примеру BST (Binary Search Tree), который является экземпляром Foldable: data Tree a = Nil | Node a (Tree a) (Tree a) deriving (Show, Read, Eq) instance F.Foldable Tree where fold…
14 окт '14 в 20:15
1 ответ

Складной IntSet

Для меня целочисленный набор представляется складной структурой данных. Почему Data.IntSet не пример Foldable? Мое настоящее намерение состоит в том, чтобы использовать find на IntSet, Как я могу найти найти для Data.IntSet?
31 июл '17 в 20:44
2 ответа

Есть ли такая вещь, как MaximumWith?

В частности, я ищу функцию "MaximumWith", maximumWith :: (Foldable f, Ord b) => (a -> b) -> f a -> a Который ведет себя следующим образом: maximumWith length [[1, 2], [0, 1, 3]] == [0, 1, 3] maximumWith null [[(+), (*)], []] == [] maximu…
09 окт '18 в 10:59
1 ответ

Неоднозначное явление 'foldMap'

Я реализую Foldable для следующей структуры данных: data Tree a = Leaf a | Node (Tree a) (Tree a) deriving Show Когда я реализую Fold и FoldMap: instance Foldable Tree where --fold :: Monoid a => Tree a -> a fold (Leaf x) = x fold (Node l r) =…
05 май '17 в 11:34
1 ответ

Почему Monoid не является обязательным условием для foldr/foldl?

Я смотрю на Foldable класс в Хаскеле. Два из методов fold, foldMap требуется экземпляр Monoid. Но foldr или же foldl нет такого ограничения. fold :: Monoid m => t m -> m foldMap :: Monoid m => (a -> m) -> t a -> m foldr :: (a ->…
22 июн '16 в 16:42
1 ответ

Если карта может быть определена с помощью Foldable, почему Functor не упоминается в определении Foldable

Я прочитал это, map можно определить с помощью foldrэто примитивно рекурсивная функция. По крайней мере, для списков. Теперь мой вопрос: почему Functor не является подтипом класса Foldable? И если fmap можно определить только с точки зрения foldr дл…
16 мар '17 в 22:16
1 ответ

Складной против Traversable

Во время учебы Applicative глубже я пришел к Traversable, Хотя я уже знала Foldable от LYHGG я еще не видел первого, поэтому я начал читать вики на Haskell о Traversable. Читая это, я понял, почему Foldable.fold параллельно Traversable.sequenceA а т…
1 ответ

Складные и моноидные типы

Я пытаюсь написать функции, которые добавляют и умножают все элементы в списке, используя моноиды и Foldable. Я установил некоторый код, который, я думаю, работает: data Rose a = a :> [Rose a] deriving (Eq, Show) instance Functor Rose where fmap …
12 окт '18 в 12:07
1 ответ

Haskell создает карту и функцию свёртки для нового типа данных

Я написал структуру данных, data Bit a = Add a (Bit a) | End deriving (Show,Eq) data Bits a = Bits (Bit a) (Bit a) deriving (Show,Eq) но я изо всех сил пытаюсь создать карту и функцию сворачивания для них. Пока у меня есть это: instance Functor Bit …
24 июн '18 в 11:05
1 ответ

Понимание FoldLeft в ScalaZ

Я читаю несколько статей о ScalaZ и есть вопрос о понимании этого. В этой статье мы обобщаем функцию суммы, чтобы абстрагироваться от типа, подлежащего суммированию. def sum[T](xs: List[T])(implicit m: Monoid[T]) = //... куда Черта Monoid[A] определ…
16 ноя '17 в 18:48
2 ответа

Как реализовать минимум с помощью Foldr (или FoldMap)?

Я хочу реализовать минимум с Foldr или FoldMap. Согласно упражнению, оно должно иметь следующее определение: mini :: (Foldable t, Ord a) => t a -> Maybe a -- named "mini" to avoid name clash Это звучало довольно просто, но я не знаю, что я мог…
23 май '16 в 18:53