Публикации по теме 'category-theory'


Императив Хаскелл
Когда большинство людей думают о Haskell, они думают о чистом функциональном программировании. Однако, если бы он был «полностью» функциональным, он вообще не мог бы производить никаких эффектов. Да, он по-прежнему будет полным по Тьюрингу (во многом подобно лямбда-исчислению Алонзо Черча), но станет бесполезным, поскольку компьютеры в основном используются для эффективной среды. Итак, чтобы Haskell был полезен, он должен уметь выполнять эффекты. Как человеку, который использует..

Почему программисты должны изучать теорию категорий: -O
Как программист, вы, вероятно, встречали функцию map () как альтернативный способ выполнения цикла for в некоторых случаях использования кода. Знаете ли вы, что map () возникла в теории категорий? Давайте сначала определим теорию категорий. (Между прочим, я собираюсь здесь больше говорить в терминах непрофессионала без математической точности темы. В будущих сообщениях я буду более подробным и точным. Это больше похоже на вид на 10 000 футов.) Помните, когда вы изучали основы ООП..

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

Пять минут до моноида
«Моноид» имеет значение идентичности , например 0 для сложения и 1 для умножения: 0 + value = value 1 * value = value Естественно, идентичность идет в обоих направлениях: value + 0 = value value * 1 = value Моноид также имеет ассоциативную операцию . Вы, наверное, узнали об ассоциативном свойстве сложения и умножения, когда вам было десять лет. Это просто означает, что порядок, в котором вы выполняете сложение или умножение ряда чисел, не имеет..

Как программисты думают о множествах и категориях
Роль слабо и строго типизированных переменных в основах математики Давным-давно я задал вопрос о теории категорий на бирже математических стеков, и получил множество фантастических ответов и комментариев, но один ответ Карла Маммерта особенно поразил меня, и он полностью изменил мое представление о много понятий во всех разделах математики. Когда я был студентом и впервые узнал о теории множеств, это открыло мне глаза на мир продвинутой математики, и когда я впервые столкнулся с..

Что в имени?
Азбука теории категорий и функционального программирования Функциональное программирование больше не просто академическое времяпрепровождение. Сообщество JavaScript также активизировало свою игру в этой области, и знание своей функциональной азбуки стало важной частью веб-разработки. Один из ключевых выводов изучения функционального программирования - это приспособление ума к возможностям и идеям за пределами ООП (объектно-ориентированного программирования). В этом тексте я попытаюсь..

Вопросы по теме 'category-theory'

Все ли функторы Haskell являются эндофункторами?
Я немного сбит с толку, и мне нужен кто-нибудь, чтобы меня поправить. Давайте обрисуем мое текущее понимание: Где E - эндофунктор, а A - некоторая категория: E : A -> A. Поскольку все типы и морфизмы в Haskell относятся к категории...
3537 просмотров
schedule 02.08.2023

Монада - это просто моноид из категории эндофункторов, в чем проблема?
Кто первым сказал следующее? Монада - это просто моноид из категории эндофункторов, в чем проблема? И менее важное замечание: верно ли это, и если да, то не могли бы вы дать объяснение (надеюсь, такое, которое сможет понять тот, кто не...
178297 просмотров
schedule 08.06.2023

Монады как дополнения
Я читал о монадах в теории категорий. Одно определение монад использует пару присоединенных функторов. Монада определяется путем обращения туда и обратно с использованием этих функторов. По-видимому, присоединения очень важны в теории категорий, но...
5388 просмотров
schedule 15.04.2022

Реальные приложения зигогистоморфных препроморфизмов
Да, эти : {-#LANGUAGE TypeOperators, RankNTypes #-} import Control.Morphism.Zygo import Control.Morphism.Prepro import Control.Morphism.Histo import Control.Functor.Algebra import Control.Functor.Extras import Control.Functor.Fix import...
14395 просмотров

Почему в Haskell есть нестрогие функции (семантика)?
Согласно этой статье о денотационной семантике в haskell , все типы имеют дно и функцию f:A ->B является строгим , если он отображает нижнюю часть типа A в нижнюю часть типа B, в противном случае он называется нестрогим . (Это напоминает...
1036 просмотров

Являются ли вялые естественные преобразования просто естественными преобразованиями без естественности?
На странице 4 Теоремы бесплатно! , Филип Вадлер говорит, что параметричность может быть выражена в терминах нестрогих естественных преобразований. Имеет ли он в виду тот факт, что параметрически полиморфные функции в языках функционального...
314 просмотров

Простые примеры для иллюстрации категории, моноида и монады?
Я очень запутался в этих трех концепциях. Есть ли какие-нибудь простые примеры, иллюстрирующие различия между Category, Monoid и Monad? Было бы очень полезно, если бы была иллюстрация этих абстрактных понятий.
3616 просмотров
schedule 24.10.2023

Разрешимость бидекартовых замкнутых категорий
Разрешима ли проблема решения для свободной бидекартовой замкнутой категории (BCCC)? Эквивалентно, разрешимо ли равенство для простого лямбда-исчисления, расширенного сильными n-мерными произведениями и суммами? Проблема решения для свободного...
145 просмотров

Есть ли в теории категорий название для стрелок типа a -> a (в нотации Haskell)?
Как называются стрелки в теории категорий, имеющие такой тип: a -> a "От типа(?) к другому объекту того же типа" Или, может быть, у них нет определенного названия? Другими словами: существует ли имя для множества всех стрелок,...
323 просмотров
schedule 10.04.2023

Бесплатное приложение на Scala
Просмотр бесплатного пакета haskell ( http://hackage.haskell.org/package/free-3.4.2 ) есть несколько типов, которые кажутся простыми и полезными, о которых я почти не вижу литературы за пределами haskell, сейчас меня интересует тип Free Applicative....
994 просмотров
schedule 23.08.2022

Функтор C++ (отображение)
Я создал класс either<l, r> очень похожий на Either a b в Haskell. Я также реализовал функцию map прямо в классе; вот как выглядит код: template<typename l, typename r> class either { template<typename b>...
1311 просмотров

Бикатегории в Haskell
Я пытаюсь определить класс типа для бикатегорий и создать его экземпляр с бикатегорией категорий, функторов и естественных преобразований. {-# LANGUAGE NoImplicitPrelude, MultiParamTypeClasses, TypeOperators, KindSignatures, Rank2Types,...
309 просмотров
schedule 24.05.2022

Какова теоретико-категориальная основа требования о том, что функция идентификатора Haskell должна возвращать то же значение, что и переданное?
Как все это может быть правдой? В категории Hask объекты относятся к типам Haskell, а морфизмы - к функциям Haskell. Ценности не играют роли в Hask . Морфизм идентичности определяется как стрелка, исходящая из Объекта A и оканчивающаяся...
516 просмотров
schedule 28.02.2022

Есть ли какая-нибудь интуиция, чтобы понять, как объединить две функции в Monad?
join определяется вместе с bind для сглаживания объединенной структуры данных в единую структуру. С точки зрения системы типов (+) 7 :: Num a => a -> a можно рассматривать как Functor , (+) :: Num a => a -> a -> a можно...
346 просмотров

Является ли монада состояния с двумя типами переменных состояния (входной и исходящей) по-прежнему монадой?
Монада состояния Haskell State s a заставляет меня сохранять один и тот же тип s на протяжении всего блока do. Но поскольку монада состояния на самом деле является просто функцией, что, если я определю ее как State i o a = State (i -> (o, a))...
126 просмотров
schedule 17.03.2023

Является ли Monoid[String] действительно моноидом в scala?
В настоящее время я изучаю теорию категорий в scala, и закон ассоциативности говорит (x + y) + z = x + (y + z) Это нормально при работе с более чем двумя значениями ("Foo" + "Bar") + "Test" == "Foo" + ("Bar" + "Test") // true В...
334 просмотров
schedule 16.09.2022

Оператор связывания монады (›› =) ближе к композиции (объединению в цепочку) или применению функции?
Во многих статьях я читал, что оператор монады >>= - это способ представления композиции функций. Но для меня это больше похоже на какое-то приложение с расширенными функциями ($) :: (a -> b) -> a -> b (>>=) :: Monad m...
3653 просмотров

Бесплатная монада и бесплатная работа
Один из способов описать свободную монаду - сказать, что это начальный моноид в категории эндофункторов (некоторой категории C ), объекты которых являются эндофункторами от C до C , стрелки - это естественные преобразования между ними. . Если...
245 просмотров

Что такое определение Applicative Functor из точки зрения теории категорий?
Мне удалось сопоставить определение функтора из теории категорий с определением Haskell следующим образом: поскольку объекты Hask являются типами, функтор F сопоставляет каждый тип a из Hask новому типу F a , грубо говоря, добавляя к...
3916 просмотров
schedule 18.06.2022

Кошки Clojure добавляют нулевое поведение
Я использую funcool/cats , добавляю моноид со следующим кодом: (m/mappend (maybe/just [1 2 3]) nil (maybe/just [4 5 6]) (maybe/nothing)) ;;=> #<Just [1 2 3 4 5 6]> Каково обоснование...
102 просмотров
schedule 21.07.2022