Проверка диапазона во время компиляции

В Scala 3, с одной стороны, можно завести тип, имя которого — просто некоторое число, с другой стороны, можно делать вычисления с типами, а с третьей стороны можно объединять типы через логическое «или».

Из этого следует, что безо всяких макросов есть возможность определить функцию, которая, например, принимает в качестве параметра значения от нуля до какого-то определённого, а если попытаться передать какое-то другое, то компилятор выдаст ошибку.

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

Такая переменная будет прекрасно подходить к соответствующей функции.

type LessBuilder = [T <: Int, Acc] =>> T match
 case 1 => 1 | Acc
 case _ => LessBuilder[T - 1, T | Acc]

type UpTo[T <: Int] = LessBuilder[T - 1, T]

def f(x: UpTo[5]) = x + 1

println(f(3))
println(f(9)) // Ошибка компиляции

val x: UpTo[5] = 4
println(f(x))


Правда, расшифровка типа UpTo[5] получается прямо вообще офигенная.

(1 : Int) | ((5 : Int) - (1 : Int) - (1 : Int) - (1 : Int) | ((5 : Int) - (1 : Int) - (1 : Int) | ((5 : Int) - (1 : Int) | (5 : Int))))

Но, блин, работает.

Не знаю, зачем это нужно, но вдруг.



doc-файл

(no subject)

Помните, когда вам говорят про Финляндию, в ответ следует: «ну так там маленькое население и территория — им проще»?

Так вот, те же люди «там маленькое население и территория» для Кубы считают обоснованием того, почему у них и не могло получиться. Причём иногда прямо рядом с сабжевыми словами про Финляндию.

А — Аргументация!

И с США, кстати, тоже всё непросто. Так-то, по словам вышеупомянутых экспертов, они кругом империалистически вторгались, чтобы жестоко эксплуатировать население, однако в некоторых странах население осыпали с ног до головы дарами и благами — только поэтому-то у них всё и получилось. Причём эти страны и в Европе, и в Азии, и в Америках, и даже, подозреваю, в Океании.



(no subject)

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

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

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



(no subject)

Когда на страницах детского журнала публиковалась картинка с предложением найти на ней все ягодки и указать на них пальцем, это была «развивающая головоломка для детей».

Когда сейчас в игре–кликере надо найти на поле все ягодки и указать на них пальцем на тачскрине, это барахло, которое детей отупляет.

Поскольку всё остальное идентично, очевидный вывод: бумага — развивающая, а компьютер — отупляющий.



Чем современные дети

Хотелось бы прокомментировать статью «Чем современные дети отличаются от школьников 1980-х: 10 пунктов учителя истории», заодно объяснив, почему «не то образование» сложилось не сейчас, а ещё до момента преподавания автора в школе. Причём на примере самого же автора.

«Я ни разу не видел на переменках, чтобы девочки играли в свои извечные девчачьи «скакалочки», «резиночки», а мальчики гоняли мячик. Никаких «казаков-разбойников» и «салочек»! В лучшем случае – бессмысленная возня и толкотня.

Но чаще всего, Его Величество МОБИЛЬНИК! Забывая всё на свете, не видя никого и ничего, дети тычут пальчиком по экрану. Они «играют» на мобильнике по дороге в школу, на перемене, играют на уроке, в туалете, играют по дороге домой.»


Автор незаметно для себя даёт ответ на вопрос «почему всё так хреново» прямо с первых абзацев.

«Дети тычут в мобильник». То есть это развлечение такое: «тыкать в мобильник»? Поди, они даже экран на нём не включают — просто в чёрный прямоугольник «тычут»?

Collapse )

(no subject)

Вот, кстати, отличная задачка на счёт.

(123456 + 123457 + 123458 + 123459 + 123460) / 123458

Если вы решали её дольше трёх секунд, то, увы, это означает, что вы зазря потратили одиннадцать лет своего детства и юношества.

Но, так и быть, калькулятор вам поможет.



Сделано где надо

К постам Медузы в Фейсбуке, показываемым в рекламных блоках, теперь добавляется приписка «сделано иностранным агентом». При этом посты раз за разом идут очень годные (у Медузы такие не все, если что, но раз за разом попадаются таки да).

Я тут поймал себя на мысли, что эффект от этой приписки может быть прямо противоположным ожидаемому борцами с Западом.

Многих ли россиян испугает приписка к прибору, автомобилю, кинофильму, лекарству, одежде, парфюму или даже продукту питания «сделано в загранице/под контролем заграницы»? Чуваков с шапочками из фольги против синих масонских лучей, возможно, испугает, однако в среднем для россиян «сделано в загранице» — знак качества на фоне «сделано в России». Особенно если под «заграницей» имеется в виду не Китай или Малайзия, а любая страна Запада, Япония или Корея. Даже «сделано в Турции» большинство воспринимает лучше, чем «сделано в Рязани».

А в сочетании с подбором годного материала оно вообще имеет все шансы стать тем, что многие издания хотели бы себе официально завести.

В общем, страшно далеки от народа те «они», которые думают, что они такими приписками наш народ оттолкнут от «проклятых вражин». Наоборот.

О нисходящей иерархии

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

Пропагандисты написали закамуфлированное и витиеватое, но их специально подобранная аудитория тут же уловила в этом самую суть: «Сегодня ты затаришься в одном магазине с лесбиянками, а завтра что? С неграми?». Причём многие не заставили себя ждать и написали это сразу в комменты. Заодно прикинув, кто тут у нас среди родных пенатов эти самые негры — да-да, среднеазиаты и кавказцы.

Патриотическая журналистика, она, знаете, такая: сегодня ты хвалишь власти, даже когда они делают очевидную фигню, завтра проклинаешь неправильно с твоей точки зрения ориентированных, а послезавтра уже незаметно для себя оказываешься возбудителем толпы с факелами, жаждущей поквитаться с инородцами. Что отдельно подкрепляется обильно рассыпаемыми через телевизор проклятиями в адрес врагов, кои у нас сейчас вообще везде, а уж в любой загранице так поголовно.

И «постойте, я же не то имел в виду» тут уже не поможет. Тем более, что имел почти ведь уже то.

Читаем, например, от консерватора новость из Канады: «Толпа (индейцев и сочувствующих передовых личностей - В.М.) сбросила с постаментов статуи Виктории и Елизаветы II. Прибыла полиция - и задержала мужчину, протестовавшего против вандализма».

Collapse )

(no subject)

Вот смотрите, до вакцинации процент вакцинированных среди заразившихся был равен нулю. Если вакцинировать 100% населения, то до окончания эпидемии все сто процентов заразившихся будут вакцинированными. Шах и мат, аметисты: вакцинация вызывает офигенный рост доли вакцинированных среди заразившихся.

Но в школах, конечно, мы всё равно продолжим учить детей счёту в столбик вместо теорвера.



(no subject)

Кроме всего прочего выяснилось, что изрядное количество как сторонников, так и противников прививки, уверено, будто бы вакцинация должна поднимать вокруг человека что-то типа защитного купола, от которого отскакивают все мимо пролетающие вирусы, а потому заразиться оными привитый не может.

Между этими группами людей разве что разнится мнение о том, что из этого следует.

По версии одних, раз после прививки ты неуязвим и в принципе не можешь ни заразиться, ни заразить кого-либо, то никаких мер больше предпринимать не надо.

По версии других, если защитный купол над всеми привитыми не поднялся, то вакцинация не работает и смысла в ней никакого.

Зато у нас лучшее в мире образование!