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 это тривиальные случаи контейнеров
Cheese
Reader и есть функция @cblp_su
в конечном счёте да, но понять его проще
Vasiliy
я норм залечил гошнику про функторы на примере гошных указателей и слайсов
Cheese
Option<T>, Result<T, Err>, а Радер что это?
Reader — это "окружение"
Vladislav
как это должно выглядеть в итоге
Имеем toHex, это функция из интов в строчки toHex(0) = "0x0" toHex(1) = "0x1" ... toHex(10) = "0x10" Это можно представить как бесконечный массив, по индексу 0 лежит "0x0", по индексу 10 лежит 0x10
Vladislav
Я не знаю, вроде простая идея
Cheese
а Maybe и Either это тривиальные случаи контейнеров
вот тривиальные случаи как раз лучше заходят, а потом проще от них обобщать
Vladislav
toHex.map(x => x + "!") даст нам другой "бесконечный массив", в котором уже все строчки содержат "!" на конце
Vladislav
так же как someArray.map(x => x + "!") просто замапит обычный массив и даст новый массив
Sherzod
toHex.map(x => x + "!") даст нам другой "бесконечный массив", в котором уже все строчки содержат "!" на конце
результат будет функцией, так? var toHexVoskl = toHex.map(x => x + "!"); tohexVoskl(0) => "0x00!"
Vladislav
Да
Cheese
(а в математике (теории множеств) массив определяется как раз как функция из [1..n])
Sherzod
функция из отрезка?
Vladislav
Вот, вроде разобрались с map на массивах, деревьях, функциях. В общем, штуковины которые поддерживают map вот таким образом являются функторами (если быть точнее, то эндофункторами в определенной категории, но это я сейчас точно не объясню)
Cheese
функция из отрезка?
функция из множества натуральных чисел от 1 до n
Sherzod
функция из множества натуральных чисел от 1 до n
а как там может быть функция, если это множество _натуральных_ чисел?
Cheese
а как там может быть функция, если это множество _натуральных_ чисел?
функция из множества натуральных чисел от 1 до n в то множество, которое тебе нужно, например, во множество сепулек
Vladislav
@Epikur Функция — это отображение одного множества на другое. Нет никакой причины, по которой первое из множеств должно быть действительными числами (отрезок, как ты предположил), а не натуральными.
Sherzod
функция из множества натуральных чисел от 1 до n в то множество, которое тебе нужно, например, во множество сепулек
я тебя не понимаю. У меня есть множество яблок, кроме яблок там ничего нет. Как там может оказаться функция?
Alex
функция между двумя множествами
Vladislav
Да
Alex
может быть функция которая сопоставляет каждое яблоко соседнему
Cheese
я тебя не понимаю. У меня есть множество яблок, кроме яблок там ничего нет. Как там может оказаться функция?
если ты хочешь описать массив из 42 яблок, ты должен сопоставить числам от 1 до 42 по яблоку
Alex
или функция которая сопоставляет яблоко его весу
Sherzod
Окей
Sherzod
Я уже понял что даже функтор простыми словами не могу объяснить
Cheese
Alex
массив индексированный яблоками чо
Vladislav
Я уже понял что даже функтор простыми словами не могу объяснить
Отлично, значит могу не продолжать 😅 А то печатать надоело и работать надо
Sherzod
Но то что Алекс Грызлов пишет... Какой-то рокет сайенс
Sherzod
Сейчас еще раз его сообщение прочитаю
Alex
категори саенс
Cheese
массив индексированный яблоками чо
можно мэп индексировать яблоками, но массив только числами (или яблоками, но только после того, как ты их пронумеруешь)
Alex
короч функторы это обобщение функций а профункторы это обобщение реляций
Sherzod
Реляция - это связи?
Alex
типа как в базе данных
Vladislav
@clayrat Первое понятно (функции это функторы на тонких^W дискретных категориях), а второе можно пояснить?
Alex
https://bartoszmilewski.com/2016/07/25/profunctors-as-relations/
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 по-моему, самое понятное практическое применение ТК, а именно: программный код, функции образуют категорию. давайте отобразим её на любую другую