Size: a a a

Compiler Development

2021 April 07

А⚙

Антон ⚙️ in Compiler Development
Причём количество символов # с каждой стороны может быть произвольным (в том числе и ноль), лишь бы было одинаковым с каждой стороны
источник

AT

Alexander Tchitchigi... in Compiler Development
Объективно слегка похуже — больше синтаксического мусора. 😒
источник

[

[BRM]White Rabbit in Compiler Development
Ну, каждому своё.
У джавы вон == для Integer не работает нормально - никто не жалуется.
источник

D

Dika in Compiler Development
В окамле можно выбирать, что запрещено писать внутри строки. В литерале {regex|[A-Za-z]+|regex} допустимо использовать все, кроме |regex}.
источник

DF

Dollar Føølish in Compiler Development
Я вас удивлю но в перле было так же
источник

D

Dika in Compiler Development
да, here document аналогично работает
источник

ДК

Дмитрий К in Compiler Development
Типичная проблема всех этих экранирований - для многострочных текстов не понятно что делать с отступами и переводами строк в начале и в конце. И приходится изгаляться, чтобы лишнее не попало в строку.
источник

[

[BRM]White Rabbit in Compiler Development
.trim
.replace "/n +" with "/n"
источник

AK

Andrei Kurosh in Compiler Development
Если текст больше пары строчек и в нем важны пробелы (html-шаблон?), то его лучше вынести в отдельный файл и считать в рантайме, тем самым решив все проблемы с экранированием и заодно получив для него полноценный ide experience
источник

ДК

Дмитрий К in Compiler Development
Есть много языков, где пробелы и переводы строк влияют на результат.

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

M

MaxGraey in Compiler Development
Вопрос, а в каких языках / компиляторах используют linked-closure представление и конвертацию? Я так понял в v8  движке точно, для экономии памяти. Но если рантайм полагается на GC, то второй вариант только усугубляет положение и потребление памяти, разве нет?
источник

AK

Andrei Kurosh in Compiler Development
Я у себя в игрушечном языке так реализовал замыкания, потому что это казалось самым простым наивным способом
источник

AK

Andrei Kurosh in Compiler Development
Думаю что грамотнее было бы делать не всегда одну ссылку на скоуп на 1 выше, а прямые ссылки на каждый скоуп, переменные из которого используются в текущем, чтобы не было N переходов к родителю
источник

h

hazer_hazer in Compiler Development
если я правильно понял, то я также делал получается. Мне кажется так много где в pet проектах япов
источник

ДК

Дмитрий К in Compiler Development
Не только, ещё и для возможности изменения значения во внешнем скоупе.
источник

M

MaxGraey in Compiler Development
Это CPS лямбды, там ничего не изменяется и не мутируется для free vars
источник

ДК

Дмитрий К in Compiler Development
Я про V8.
источник

AT

Alexander Tchitchigi... in Compiler Development
Потребление памяти-то точно не выше, поскольку копирования (размножения) значений нет. Разве что в вырожденных случаях. Насчёт GC pressure из-за лишних ссылок "на глазок" сказать невозможно.
источник

M

MaxGraey in Compiler Development
Вообще есть, так как корень списка не может быть собран сборщиком мусора пока на него ссылаются. В первом же случае они независимы и ортогональны хоть и избыточны в плане общих свободных переменных
источник

M

MaxGraey in Compiler Development
Собственно читаю сейчас вот этот пейпер
https://www.cs.princeton.edu/~appel/papers/safe-closure.pdf
источник