Vladislav
Нет, какой начальный массив? Я уже рассматриваю гипотетическую функцию toHex, а не массив
Vladislav
и провожу аналогию, что она как бесконечный массив
Evgeniy
тут есть разница между тем приминить map на функцию или на результат ее выполнения
Sherzod
почему она бесконечный массив?
Vladislav
["0x0", "0x1", "0x2", ... "0xA", "0xB", ... ]
Vladislav
потому что по индексам содержит hex-строчки
Vladislav
даешь ей индекс, получаешь строчку
Sherzod
индексы откуда?
Vladislav
входные данные
Vladislav
ты же ей на вход передаешь число
Cheese
я предпочитаю объяснять функторы через Maybe, Either, Reader, а только потом функции
Sherzod
как это должно выглядеть в итоге
Vladislav
Reader и есть функция @cblp_su
Vladislav
а Maybe и Either это тривиальные случаи контейнеров
Sherzod
Vasiliy
я норм залечил гошнику про функторы на примере гошных указателей и слайсов
Cheese
Vladislav
как это должно выглядеть в итоге
Имеем toHex, это функция из интов в строчки
toHex(0) = "0x0"
toHex(1) = "0x1"
...
toHex(10) = "0x10"
Это можно представить как бесконечный массив, по индексу 0 лежит "0x0", по индексу 10 лежит 0x10
Vladislav
Я не знаю, вроде простая идея
Sherzod
Vladislav
toHex.map(x => x + "!") даст нам другой "бесконечный массив", в котором уже все строчки содержат "!" на конце
Vladislav
так же как someArray.map(x => x + "!") просто замапит обычный массив и даст новый массив
Sherzod
Vladislav
Да
Cheese
(а в математике (теории множеств) массив определяется как раз как функция из [1..n])
Sherzod
функция из отрезка?
Vladislav
Вот, вроде разобрались с map на массивах, деревьях, функциях. В общем, штуковины которые поддерживают map вот таким образом являются функторами (если быть точнее, то эндофункторами в определенной категории, но это я сейчас точно не объясню)
Vladislav
@Epikur Функция — это отображение одного множества на другое. Нет никакой причины, по которой первое из множеств должно быть действительными числами (отрезок, как ты предположил), а не натуральными.
Sherzod
Alex
функция между двумя множествами
Sherzod
Cheese
Vladislav
Да
Alex
может быть функция которая сопоставляет каждое яблоко соседнему
Cheese
Alex
или функция которая сопоставляет яблоко его весу
Sherzod
Окей
Sherzod
Я уже понял что даже функтор простыми словами не могу объяснить
Cheese
Alex
массив индексированный яблоками чо
Sherzod
Но то что Алекс Грызлов пишет... Какой-то рокет сайенс
Sherzod
Сейчас еще раз его сообщение прочитаю
Alex
категори саенс
Alex
короч функторы это обобщение функций а профункторы это обобщение реляций
Sherzod
Реляция - это связи?
Alex
типа как в базе данных
Vladislav
@clayrat Первое понятно (функции это функторы на тонких^W дискретных категориях), а второе можно пояснить?
Alex
https://bartoszmilewski.com/2016/07/25/profunctors-as-relations/
Cheese
Vladislav
thin category
Sherzod
и что с этими гистаминовыми функторами делают?
Vladislav
никаких стрелок кроме id
Alex
https://ncatlab.org/nlab/show/thin+category
Vladislav
черт
Vladislav
я имел в виду дискретные значит(?)
Vladislav
да, точно
Vladislav
прошу прощения, функции — это функторы на дискретных категориях
Sherzod
зачем всё это нужно?
Alex
чтобы абстрагировать математику
Sherzod
с иммутабельностью и Option<T> понятно
Alex
типа сопоставлять тервер с топологией
Alex
теоремы не доказывать одинаковые по многу раз
Sherzod
а какой профит в этом?
Alex
для математиков есть
Alex
и хардкорных фпшников
Alex
типа кметта
Sherzod
кметта это человек?
Vladislav
Edward Kmett
Alex
https://www.linkedin.com/in/ekmett
Sherzod
Он приложухи для брокеров пишет?
Sherzod
Для уолстрит?
Alex
бекенды скорее
Cheese
я тут на днях слушал доклад Конала Эллиотта про то, как он умеет трансформировать программный код в произвольную категорию (категории скорее в хаскелльном смысле, чем в математическом) http://conal.net/papers/compiling-to-categories/compiling-to-categories.pdf
по-моему, самое понятное практическое применение ТК, а именно:
программный код, функции образуют категорию. давайте отобразим её на любую другую