Как стать автором
Обновить
71
0
Катерина Галкина @fierce-katie

Программист

Отправить сообщение
Жаль, что Хокинг не дожил.
«Первоначально он отнёсся ко мне неприязненно и даже оскорблял меня, то есть думал, что оскорбляет, называя меня собакой, — тут арестант усмехнулся, — я лично не вижу ничего дурного в этом звере, чтобы обижаться на это слово…»
Про что-то более конкретное, типа хаскелистов или даже теоретиков категорий. Ни к тем, ни к другим, себя не отношу :)
А, поняла, про что вы. Там имеется в виду, что результирующая категория, взятая как пример крайнего случая, состоит из одного объекта и одного морфизма. Т.е. это не происходит потому, что функтор так действует, а потому что мы изначально такую захотели рассматривать. Попробую переформулировать чётче эту часть, спасибо.

Так это нигде и не утверждается… Если тот же тип Bool взять как единственный объект и функции Bool -> Bool как морфизмы, то их 4 штуки показано. Мне просто не хотелось для каждой стрелочку рисовать, чтобы рисунок не загромождать.

А «нас» — это кого? К какой категории (извиняюсь за каламбур) вы меня отнесли?
Спасибо, поправила ссылку.
Если говорить о типах в Haskell, то, конечно, `Void` и `()` — совершенно разные вещи.
Если сравнивать пустой кортеж и `Void` в Haskell с тем, что обозначается словом `void` в С, то **сишный** `void` — аналог пустого кортежа в Haskell, но не аналог ненаселённого типа `Void`.
В книжке, на которую я ссылаюсь, это тоже есть: bartoszmilewski.com/2014/11/24/types-and-functions

Если вы про void, который в С-подобных языках, то это действительно то же самое, что и пустой кортеж. Т.е. то, что используется, если нам не важен результат:


void main(void) {..}

main :: IO ()

К сожалению, такая вот путаница с названиями.

Некоторые лекторы у нас на факультете перед лекцией выкладывают конспекты и/или слайды презентации, по которым потом и будут читать, и рекомендуют это скачать/распечатать и потом во время лекции не строчить всё это с нуля, а следить за повествованием и делать заметки с пояснениями, примерами и всем, что покажется нужным. Тоже было довольно эффективно.
Это прекрасно! Особенно если не будет мешать восприятию материала. Я вот конспектировать на компьютере не могла, это очень отвлекало, и после нескольких попыток начать записывать хотя бы plain text возвращалась к ручке и бумаге. Мой мозг запоминает значительную часть материала, если он написан от руки. Конспекты получались, к стати, довольно разборчивые и красивые, поэтому были порывы это всё потом заверстать в LaTeX либо во время подготовки к экзамену, либо в каникулы после сессии, но руки не доходили :(

Тут есть ещё один нюанс — если конспектировать какие-нибудь математические лекции на русском в vim, то можно сойти с ума, запутавшись в раскладках и набрав команды vim'а на русском. Особенно досадно, когда команды в обеих раскладках что-то значат (а ведь практически любая последовательность символов — это валидная команда vim'а :D), и редактор творит что-то непредсказуемое. Набирала значительное количество текстов на русском в vim, и такая фигня происходила довольно часто (у кого это нормально получается, поделитесь секретом?). Если во время конспектирования на лекции такое произойдёт, скорее всего сильно отстанешь от изложения.

В любом случае, в статье много крутых штук описано и безотносительно лекций, настрою себе обязательно.
Вот вы иронизируете, а вот документация к одной из самых известных библиотек на Хаскеле: hackage.haskell.org/package/lens-4.17/docs/Control-Lens-Lens.html
А вот часть списка определённых в ней функций: hackage.haskell.org/package/lens-4.17/docs/doc-index-60.html

Не встречала ещё тех, кто был бы к этой библиотеке равнодушен, её либо любят и везде используют (ведь названия операторов такие очевидные и интуитивно понятные), либо не используют никогда и другим не советуют.
С перекрытием имени `f` и правда очень нехорошо вышло, спасибо, что ткнули, сама не заметила :( Но зато это иллюстрирует, как обстоят дела со связыванием в языке.

По поводу одинаковых названий переменных типа и переменных в коде, такое лично меня запутывало на ранних стадиях обучения (и не только меня, видела ещё пару студентов с такой проблемой буквально в этом семестре). Начинает казаться, что тут типы first-class. Скорее всего это тоже дело вкуса, но с тех пор сама так не пишу.
Очень плюсую. Как раз сидела думала, в какую бы ветку написать, что пост совсем не про коммерческую разработку и что к каждому вырванному из контекста куску кода с очень непонятными переменными прилагается несколько абзацев пояснений.
Даже не знаю, как правильно ответить на ваш вопрос, кроме как руками помахать и сказать, что «так принято», «все так делают», «меня так научили», «я так привыкла» и т.п.
Скорее всего это пришло из теории категорий. И сам язык располагает к использованию компактного синтаксиса, инфиксных синонимов и коротких имён в том числе.
Но надо сказать, что многобуквенные переменные типа не так уж и редко встречаются.
Думала написать похожий туториал про монадические парсеры, но пока даже не могу предположить, когда руки дойдут. Дальше раскрывать тему аппликативного подхода не собиралась, так что с удовольствием почитаю, если вы про это напишете, мне тоже тема интересна.

Я старалась избегать в примерах таких конструкций, их красоту трудно понять новичкам, оно скорее может отпугнуть. Но надеюсь, что добравшиеся до комментариев осмыслят и оценят этот вариант, тут вся сила языка просматривается. С такими небольшими красивыми этюдами можно даже отдельный пост делать.
Похоже на финский :)
«Operator» и «statement» в контексте языков программирования вносят много путаницы. Потому что исторически сложился перевод «operator» = «операция», а «statement» = «оператор».

Ещё такое распространённое слово как «data» говорят по-разному. Слышала оба варианта произношения («дата», «дейта»), когда в беседе участвовало много людей из разных неанглоговорящих стран.
И тут ещё подвох с единственным/множественным числом. «Datas» иногда тоже приходилось видеть.
Круто! В своё время очень не хватало такой штуки.
А для Emacs будет? (для Vim же есть :))

Оставлю тут ссылку на Miller, может кому-то пригодится. Позволяет манипулировать данными в форматах CSV, TSV, DKVP, JSON и не только. Unix-way утилита для командной строки, написано на С, без рантайм-зависимостей.
Могла бы плюсануть, обязательно бы это сделала! Только они «3Blue1Brown», но не суть. По линейной алгебре из видео поняла больше, чем после годового курса в университете. Тоже кидала этот канал в комменты к недавнему посту с советами первокурсникам. ИМХО, вот примерно так и нужно рассказывать на лекциях.

Информация

В рейтинге
Не участвует
Откуда
Москва, Москва и Московская обл., Россия
Зарегистрирована
Активность