Обновить

Комментарии 16

А почему скобочки не египетские?

Стоп! Скобочки египетские...

А почему скобочки египетские?

А выбрать между табами и пробелами можно? А там два символа или четыре?

Что вы ржёте? Это ВАЖНО!

Табы и пробелы не трогаем. Пара py<->скобки живёт на уровне токенов, исходное форматирование переживает конвертацию - какие пробелы в исходнике, такие и останутся. Египетские скобки - дефолт принтера, K&R. Но вы правы: это ВАЖНО.

А скобки вокруг усолвия в if можно? а для моего товарища не надо. И синтаксис объявления словаря адаптировать. А, если мы пишем со скобками, то наверно язык не умеет в распаковку слева от =, можно тоже убрать?

Это переводчик, а не трансформер желаний - она переводит то, что есть, между тремя каноническими формами. Каждая причуда это отдельная шкура, их комбинаторика рвёт round-trip. Threading-макросы уже запрещены по той же причине, неоднозначность ломает контракт. Вашему товарищу - отдельный патч, товарищей не бросаем.

Канонические формы привязаны к языку программирования. Переводить надо между ними

В конце статьи так и напрашивается опрос...

К опубликованной статье опрос не прикрутить. Но следующей серией, когда появится C-шкура, голосование «в чём читать ваш Python» станет осмысленным.

А насколько вообще востребовано преобразование Python в Lisp?

Они превратили синтаксис Python в Rust! Сволочи!

  • Yay!.. - Fluttershy.

Уже работаю над этим :)

as rust quicksort.py

fn quicksort(items) {

if len(items) <= 1 {
return items;
}
let pivot, *rest = items;
let lo = [x for x in rest if x < pivot];
let hi = [x for x in rest if x >= pivot];
return quicksort(lo) + [pivot] + quicksort(hi);
}

Экспериментальная шкура, едет в 0.1.1. "Yay!.."

Эта сортировка не упадет на большом отсортированном массиве?

никто не утверждал, что это будет эффективный in-place алгоритм и да вообще можно было позвать sort()

Да, упадёт. Опорный элемент первый, отсортированный массив - худший случай, глубина рекурсии линейная, и Python упрётся в лимит задолго до "большого". Quicksort здесь ради компактности трёх шкур, не алгоритмической добродетели

Простите мне мой французский, но "код на Lisp" - это адски бессмысленная хрень. Вы транслятор нейросеточкой писали что ли? Иначе, откуда такая бредовая структура у S-выражений? Что такое [pivot], например? Если это вектор, то что такое тогда `[x in rest]`? Если это такой синтаксис, а for - макрос, то что такое `(for [x in rest])`? Во что это должно раскрываться? Или макрос - это `list-comp`? Но тогда зачем все эти лишние скобочки?

P.S. На Си тоже бессмысленная с точки зрения Си хрень, но там можно сослаться на то, что это не Си, а это такой вот сиподобный синтаксис. Но в коде на Lisp - явно структурный бред, который даже не списать на то, что это "условный Lisp".

Так это ж вообще не лисп. Это питон в такой вот нестандартной форме записи. Получившийся результат не понятен ни лисперу, ни питонисту, но, кажется, этого и не требовалось.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации