Описание тега monoids
A monoid is a set that is closed under an associative binary operation and has an identity element I ∈ Such that for all a ∈ S, Ia = aI = a. Note that unlike a group, its elements need not have inverses. It can also be thought of as a semigroup with an identity element.
2
ответа
Почему бездельник оценивает содержание моноида
Почему (mempty :: String) работать, но (mempty :: Maybe Bool) выдает ошибку Bool не имеющий тип класса Monoid, но почему это даже имеет значение, это завернуто в Может быть, так или иначе?
13 мар '17 в 18:17
1
ответ
Почему Клейсли не является экземпляром Monoid?
Если вы хотите добавить две функции типа (a -> m b), чтобы вы получили только одну функцию того же типа, добавляя оба результата, вы можете использовать Kleisli для этого: instance (Monad m, Monoid b) => Monoid (Kleisli m a b) where mempty = Klei…
04 окт '15 в 16:39
1
ответ
ZipList Monoid haskell
Моноид по умолчанию для списков в GHC Prelude - это конкатенация. [1,2,3] <> [4,5,6] становится [1,2,3] ++ [4,5,6] и поэтому [1,2,3,4,5,6] Я хочу написать экземпляр ZipList Monoid, который ведет себя так: [ 1 <> 4 , 2 <> 5 , 3 <…
02 май '18 в 08:36
2
ответа
Применить список булевых функций к двум аргументам в Haskell
У меня есть список функций типа a -> b -> Bool, и я пытаюсь применить их к двум входам и объединить результаты с All или же Any, У меня это работает с функциями одной переменной: mconcat (map (All . ) [(<7),(>7),(==7)]) $ 6 но я не могу …
21 янв '17 в 15:22
2
ответа
Зачем моему типу данных нужен экземпляр Monoid для использования этого объектива?
Я использую код ниже для записи, которая имеет поле '_scene' типа SceneGraph. Я создал линзы для него, используя makeLenses. inputGame :: Input -> Game -> Game inputGame i g = flip execState g $ do let es = g ^. userInput . events sg = g ^. sc…
09 июл '13 в 01:47
3
ответа
Mappend (a1,b1) и (a2,b2) в (a1+a2, b1+b2)
Я помню, что это очень просто, и может быть просто сделано с сопоставлением с образцом даже через лямбда-подобие (\a b -> (fst a + fst b, snd a + snd b) ) (1,2) (3,4), Тем не менее, я думаю, что в стандартной библиотеке Haskell должны быть способ…
27 апр '17 в 20:30
1
ответ
Почему нет метода сгиба?
Я заметил, что класс Foldable содержит fold, foldl, foldr, foldl 'и foldr', но нет сгиба ' (для строгих моноидальных складок) Как я могу эмулировать поведение сворачивания с помощью IntMap (который реализован в виде дерева, но не дает прямого доступ…
16 июн '14 в 20:48
1
ответ
Образует ли Exclusive-Or моноид для Bools?
Я сделал оператор для функции xor, это выглядит так: op :: Integer -> Integer -> Maybe Integer op x y | x == 0 && y == 0 = Just 0 | x == 0 && y == 1 = Just 1 | x == 1 && y == 0 = Just 1 | x == 1 && y == 1 = Just…
06 июл '17 в 09:34
0
ответов
Как создать универсальный моноид из ADT
Учитывая, что у меня есть существующий ADT, возможно ли создать общий моноид. Отныне у меня в ADT столько моноидов, сколько классов, но это не СУХОЙ. Вот код: import scalaz._ import Scalaz._ object DataRework extends App { sealed trait MultiItemValu…
19 июн '15 в 07:22
3
ответа
Верно ли мое понимание моноида?
Итак, сейчас я изучаю Хаскель, и я хотел бы подтвердить или опровергнуть мое понимание моноида. Из курса CIS194 я понял, что monoid - это, по сути, "API" для определения пользовательской двоичной операции над пользовательским набором. Затем я пошла,…
02 сен '15 в 17:17
4
ответа
Haskell: дублированные функции (+) и (++), mappend
(+) а также (++) это просто специализации mappend; я прав? Зачем они нужны? Это бесполезное дублирование, поскольку Haskell имеет эти мощные классы типов и вывод типов. Допустим, мы удаляем (+) а также (++) и переименовать mappend (+) для визуальног…
09 июн '12 в 13:34
3
ответа
Являются ли монады Writer m и Either e категорически двойственными?
Я заметил, что между двумя Writer m а также Either e монады. Если m является моноидом, то unit :: () -> m join :: (m,m) -> m может быть использован для формирования монады: return is composition: a -> ((),a) -> (m,a) join is composition:…
22 апр '10 в 10:44
1
ответ
Почему мы используем моноид и функтор там?
Я новичок в Хаскеле.Я не могу понять, почему мы используем моноид и instance Functor Matrix в коде ниже и как instance Functor Matrix работает? instance Functor Matrix where fmap f (M n m v) = M n m $ fmap (fmap f) v instance Num a => Num (Matrix…
28 май '14 в 14:01
1
ответ
Как "суммировать" поток моноидных значений в Scala?
Предположим, я использую библиотеку Rng для простого моделирования Монте-Карло (как в этом посте). val d : Rng[Double] = double val point : Rng[(Double, Double)] = pair(d, d) val points = point.stream(1000) val tests = points.map(point => if (ins…
11 дек '14 в 15:30
2
ответа
Функция "mayBeMempty" для полугруппы
Следующая функция - mayBeMempty :: (Eq a, Semigroup a) => a -> a -> Bool mayBeMempty candidate ref = candidate <> ref == ref Является (менее эффективным) обобщением Data.Set.isSubSetOf, Он проверяет, содержится ли первый аргумент во в…
25 дек '18 в 18:46
3
ответа
Разница между ассоциативным и коммутативным
Я пытаюсь понять ассоциативность в моноиде. Из книги написано: Ассоциативность просто говорит, что вы можете связать аргументы вашей операции по-разному, и результат будет таким же. Например: Prelude> (1 + 9001) + 9001 18003 Prelude> 1 + (9001…
26 июн '17 в 12:13
1
ответ
Скрытие объявлений экземпляров класса типов при импорте в Haskell
Я пытаюсь сделать игру в крестики-нолики, и я решил создать типы для ячеек (элементов доски) и доски следующим образом: data Cell = X | O deriving (Show, Eq) type Board = [[Maybe Cell]] Здесь Nothing представляет пустую ячейку, (Just X) и (Just O) п…
22 фев '19 в 21:22
3
ответа
Какова идентичность типа?
У меня есть следующий тип данных: data Bull = Fools | Twoo deriving (Eq, Show) и использовать Monoid для его реализации: instance Monoid Bull where mempty = Fools mappend _ _ = Fools Как вы видете, mempty Является ли функция тождества законами тожде…
26 июн '17 в 14:25
2
ответа
Моноидный экземпляр для ParMap?
Есть ли существующий Monoid экземпляр для scala.collection.parallel.ParMap в кошках? Я так не думаю, но я не уверен. Если нет, то как бы мне создать такой экземпляр? Вот что у меня так далеко... import cats._ import implicits._ def parMapMonoid[K, V…
09 июл '18 в 08:28
2
ответа
Добавление ограничения Monoid к скрытой переменной
Я в главе Книги Хаскелла о Applicative, Я пишу Applicative экземпляр для ZipList и я знаю, что переосмыслил это и меняю свой подход. Мой старый подход был: data List a = Nil | Cons a (List a) deriving (Eq, Show) newtype ZipList' a = ZipList' (List a…
07 апр '18 в 05:22