Ефим Карпович · счетовод Монетного двора
Ваш Rust молодец: монету, которую уже отдали, второй раз отдать не даёт. А сейф, который забыли закрыть, он закрывает сам, молча, когда переменная выходит из области видимости. Для монеты это удобно. Для сейфа нет: сейф, закрытый без подписи, в моей книге значит «монеты ночевали без счёта». Мне нужен язык, где сейф закрывают ровно один раз. Не ноль и не два.
В журнале Кассы за прошлый месяц Счетовод нашёл две странные строки. В одной сейф № 4 закрыт дважды, и под одной выемкой стоят две подписи. В другой сейф № 9 открыт вечером и не закрыт вовсе. Программу сейфов Касса получила от Арбитра, а Арбитр, как ты помнишь, написан на Haskell.
В уроке 66 ты видел, что Rust устроен как аффинная логика: переменную нельзя использовать дважды, но можно не использовать вовсе. Сегодня шаг дальше, к логике из урока 65 целиком: «ровно один раз». В Haskell для этого есть расширение LinearTypes, и к концу урока компилятор сам найдёт обе строки из журнала Счетовода.
урок из курса
Урок из курса «Логика и типы». Курс покупается один раз и остаётся навсегда: 500 ₽.
Оплата пока не подключена: премиум и курсы открываются промокодом.