- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
const arr = [['govno', 'shit'], ['kod', 'code']]
//we expect it to be {'govno': 'shit', 'kod' : 'code'}
//unsupported(yet)
Object.fromEntries = arr =>
Object.assign({}, ...Array.from(arr, ([k, v]) => ({[k]: v}) ));
const res1 = Object.fromEntries(arr)
const res2 = arr.reduce((res, [key, value]) => Object.defineProperty(res, key, {'value': value, 'enumerable': true}), {})
const res3 = {}
arr.forEach(([key, value]) => res3[key] = value)
А как превратить массив пар ключ-значение в ассоциативный на Вашем языке?
Подобная питушня вида x == true ? true : false легко выкомпиливается.
В случае той же сишки такую простую питушню человек перестаёт писать после достижения определённой стадии образованности, и оптимизатору нужно работать с менее тривиальным кодом, примеры для начинающих компилятор уже должен щёлкать как орешки.
Для этого нужно всего лишь формально доказать что читать далее.
К слову, ни parse(stringify()) ни stringify(parse()) нельзя выбросить.
Точно. Именно поэтому я за композицию из трёх питушень.
Кстати, x ? true : false в JS/python ведь тоже нельзя выбросить :)
А как же ?
Проверка на бульность не трогает внутренности объекта. Даже если его valueOf/toSring бросает исключение, ничего не будет.
Ещё можно переписать рекурсивно, с конкатенацией и join через свёртку, которую тоже рекурсивно написать. Может, потом ещё через транслятор в JSFUCK прогнать.
На самом деле, я слошарил и ничего интересного в eval не передал. Там фактически будет сджойненная строка с жсонами пар. Надо так:
Однако для меня радость от фич, позволявших "выражаться" богаче, со временем сменилась отторжением, поскольку конца и края нюансам видно не было. Не знаю, сколько знаний требуется, чтобы не сомневаться в своей интерпретации очередного куска кода. Спецификация Perl5 (если б существовала) потягалась бы с каким-нибудь C++25, я думаю.
wow such random so timtowtdi
Nous restons cinq jours à Paris.
https://ideone.com/INzFOb
https://en.cppreference.com/w/cpp/language/aggregate_initialization
Правда, там куча ограничений. Насколько я понял, это, например, не сработает:
Вот говорят, что машина Тьюринга и лямбда-исчисление эквивалентны для вычислений. А что с императивными программами? Как теория формализует ввод для программы?
Допустим, программа под машину Тьюринга реализует чат-бота и общается с пользователем. В этом случае часть ввода пользователя будет зависеть от вывода чат-бота.
Представим такую же программу под лямбда-исчисление. Здесь запускаемая функция
* либо требует сразу весь ввод, и пользователь вынужден у себя просчитывать ходы чат-бота,
* либо возвращает кортеж из фразы и функцию для следующего вызова,
* какое-то монадическое значение или текст программы на C - для последующего запуска.
Всё это выглядит чем-то неспортивным.
Файлы лежат на ленте...
> запросы к другим серверам
А тут согласен.
Вообще, физически можно любой кусок ленты переписать/перечитать в любое время, пока машина на него не наехала.
Хотя, теперь мне вмешательство в ленту тоже уже начинает казаться нечестным.
"there is no spoon" (тм)
в патч Бармина
И что сравнения не ассоциативны, поэтому цепочка <= (без добавления круглых скобок) не сконпелируется, то бишь -0.5 <= 0.0 <= 0.5 не подразумевает ни Си-шного 1 <= 0.5, ни Перл6-ового -0.5 <= 0.0 && 0.0 <= 0.5.
Признаюсь, сам не слежу ни за 6, ни за 5. Но совсем недавно у бабочки было обновление спецификации и реализации. Вот только от лозунга «Perl 6 is optimized for fun, short -Ofun» с их сайта веет обречённостью и печалью, кмк.
Полный код доступен по ссылке: https://ideone.com/3v5Urq
Пруф: https://3v4l.org/aTW6G