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

Программист

  • Подписчики 13
  • Подписки 9

Создаем веб-приложение на Haskell с использованием Reflex. Часть 2

В наших проектах мы это не использовали, но выглядит любопытно. Не знаю, насколько корректно сравнивать с Reflex, больше похоже на Yesod или даже Hakyll, к тому же архитектура не такая гибкая (в туториале описывается фиксированная структура проектов). Думаю, если надо что-то быстро накидать типа личного блога, то будет удобно использовать, пока нет нужды делать что-то, выходящее за рамки их архитектуры.
Немного напрягает обилие "программирования мышью" (опять-таки судя по туториалу), из-за такого начинают клепать код, вообще не понимая, что на самом деле происходит. Но это уже моя личная вкусовщина :)

Сравнение Elm и Reflex

Спасибо! Мы у себя TS+Redux не пробовали, у нас уже была кодобаза на Haskell и хотелось продолжать использовать чисто функциональный язык.
У одного из наших коллег был опыт использования Redux + React Native + TS, и ему реализация той же самой архитектуры в Elm показалась гораздо понятнее и типизация лучше.

Сильные стороны функционального программирования

Из моего опыта — стек mtl-трансформеров и Service Handle паттерн, который пробуем сейчас на проекте.

Сильные стороны функционального программирования

Если без технических подробностей, то мы недавно про Octopod рассказывали, он тоже на Haskell: https://habr.com/ru/company/typeable/blog/541430/

Сильные стороны функционального программирования

Я когда-то писала небольшой туториал по парсерам (https://habr.com/ru/post/436234/), вполне себе прикладная задача. Да и по запросу "haskell туториал" тут находятся посты. Но русскоязычных материалов в целом мало, это факт.

22 компьютерных музея: путеводитель для путешествующих по Европе инженеров

Будет интересно почитать :) Там, наверное, в каждом более-менее крупном городе можно что-то научное найти.

22 компьютерных музея: путеводитель для путешествующих по Европе инженеров

В музее науки в Лондоне есть зал, посвященный IT и CS, и там, помимо прочего, выставлена часть БЭСМ-6, Энигма, разностная машина, на которой работала Ада Лавлейс и разностная машина по чертежам Бэббиджа (построенная уже после его смерти).


Фото





А давайте о шпаргалках?

«Кейс №1» по сетям до боли напоминает происходившее у нас; вероятно, это тот же универ и те же сети :) Только когда я сдавала, экзаменаторами были аспиранты, которым было лень ходить по аудитории, поэтому ответы искали на странице, по внешнему виду практически идентичной и заранее кем-то заботливо выложенной на свой сервак.

Мой самый запоминающийся опыт: экзамен по правоведению в магистратуре, когда готовиться к гуманитарным предметам уже настолько лень, что даже бомбы от руки писать не хотелось. А материала много, одна вода неструктурированная, списывать я от природы умею плохо, оставалось только бомбить. Поэтому решили с товарищем всех перехитрить и напечатать бомбы рукописным шрифтом, максимально похожим на свой почерк. Был написан скрипт, который в вордовом документе вставлял рандомное число пробелов перед каждой строкой, чтобы строки выглядели «рваными». Но они всё равно казались слишком ровными, а возиться с межстрочным интервалом было лень, поэтому оставили как есть.

Отвечать билет надо было сидя за партой перед лектором, т.е. достаточно далеко, поэтому должно было прокатить. Но что-то пошло не так, когда я отвечала. Лектор не поленился встать и посмотреть поближе на мои «записи». Спросил, написаны ли они от руки и попросил принести ручку, которой я это писала. Терять было нечего, поэтому я показала чёрную ручку, похожую на тонкий фломастер (такие в оранжевом корпусе, они есть практически любого цвета, я ими всегда любила записывать лекции — красиво выходило, и при сканировании/фото всё хорошо видно). Препод понял, что я не сдаюсь, и попросил написать какое-то слово из билета. Тут мне помог многолетний опыт записывания в списки присутствующих на лекциях «мёртвых душ» разными почерками, поэтому я воспроизвела напечатанное слово практически идентично. Препод сдался и стал спрашивать по следующему билету, в итоге даже поставил отл. Я уверена, что он всё и так пропалил, но либо пожалел, либо удивился моей наглости (сама удивилась). Я ему до сих пор за это благодарна и мне всё ещё немного стыдно :)

Во время этого «перформанса» мой друг с такими же псевдорукописными шпорами панически переписывал свою бомбу своей ручкой, сокращая слова настолько, что потом не смог половину из них расшифровать при ответе (но тоже сдал).

Сейчас со скромным опытом преподавания понимаю, насколько любые шпоры заметны и насколько их наличие не имеет значения, особенно на устных экзаменах, где написанный тем или иным способом билет не гарантирует даже тройку. Вообще, огромное спасибо тем преподавателям, которые разрешали пользоваться справочными материалами для подготовки билета, и задавали уточняющие вопросы по доказательствам, а по памяти просили написать только базовые определения и утверждения. Меньше стресса, результат тот же.

Ученые впервые показали реальное «фото» черной дыры

Жаль, что Хокинг не дожил.

Монады с точки зрения программистов (и немного теории категорий)

«Первоначально он отнёсся ко мне неприязненно и даже оскорблял меня, то есть думал, что оскорбляет, называя меня собакой, — тут арестант усмехнулся, — я лично не вижу ничего дурного в этом звере, чтобы обижаться на это слово…»

Монады с точки зрения программистов (и немного теории категорий)

Про что-то более конкретное, типа хаскелистов или даже теоретиков категорий. Ни к тем, ни к другим, себя не отношу :)

Монады с точки зрения программистов (и немного теории категорий)

А, поняла, про что вы. Там имеется в виду, что результирующая категория, взятая как пример крайнего случая, состоит из одного объекта и одного морфизма. Т.е. это не происходит потому, что функтор так действует, а потому что мы изначально такую захотели рассматривать. Попробую переформулировать чётче эту часть, спасибо.

Монады с точки зрения программистов (и немного теории категорий)

Так это нигде и не утверждается… Если тот же тип 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 ()

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

Как я пишу конспекты по математике на LaTeX в Vim

Некоторые лекторы у нас на факультете перед лекцией выкладывают конспекты и/или слайды презентации, по которым потом и будут читать, и рекомендуют это скачать/распечатать и потом во время лекции не строчить всё это с нуля, а следить за повествованием и делать заметки с пояснениями, примерами и всем, что покажется нужным. Тоже было довольно эффективно.

Как я пишу конспекты по математике на LaTeX в Vim

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

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

В любом случае, в статье много крутых штук описано и безотносительно лекций, настрою себе обязательно.

Аппликативные парсеры на Haskell

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

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

Информация

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