ЙажаСценарий / Говнокод #27929 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
class Node<T> {
    v: T;
    k: string;
    next: Node<T>;
}

function main()
{
    let n = new Node<number>()
    n.next = n
    n.k = "Hello";
    n.v = 10.0;
    print("done.");
}

Вы не поверите как сложно сделать простые вещи в LLVM. встречаем рекурсивные типы :)

Запостил: ASD_77 ASD_77, (Updated )

Комментарии (31) RSS

      • > A garbage collector for C

        Во J123123 охуеет ))
        Ответить
            • Выбор есть всегда. Например, можно сделать нормальный ЯП, без GC.
              GC вообще говно и не нужно
              Ответить
                • Привет.

                  Внедри пожалуйста RC типа эппловского ARC или типа С++ного смарт поинтера вместо GC.

                  Спасибо.
                  Ответить
                  • Чтобы конструкция из топика научилась крашиться и утекать?
                    Ответить
                  • > ARC
                    Худшее из двух миров, ей-богу. И оверхед, и течки.
                    Ответить
                    • Зато детерминированный, если аккуратно юзать. А gc, как правило, вообще неуправляемы.

                      З.Ы. Интересно, можно ли "аккуратно юзать" заэнфорсить на уровне типов? Иммутабельности ссылок в принципе хватает для защиты от колец. Но может что-то более тонкое можно?
                      Ответить
  • не понимаю почему на четвертой строчке нету "?" или чего-то такого, что говориоло бы об опциональности "next"
    Ответить
    • можешь так написать... но "next": рекурсивный поэтому он всегда поинтер.. так что без разницы что ты там пишешь
      class Node<T> {
      v: T;
      k: string;
      next: Node<T> | undefined | null;
      }
      Ответить
      • и что, что поинтер? В TS же null safety
        Ответить
          • У меня в Си нет никакого "null safety", поэтому я за Си!

            Почему вообще так все против NULL? Отличный хак же
            Ответить
              • На stm'ках это не прокатит, там в нуле адреса точки входа и вершины стека, если память меня не подводит.

                Надо ещё одну индирекцию. Ну и стек потом как-то сбросить.

                Так что проще документированным способом ребутнуть.
                Ответить
                • Да, где-то то ли gost, то ли ISO, то ли PolinaAksenova писал, что нулевой адрес и nullptr (0) - это разные вещи.
                  Ответить
                • В реальном режиме x86 по нулевому адресу лежит вектор прерывания номер ноль. Чтобы повесить свой обработчик, нужно разыменовать ноль.
                  Ответить
                  • Чтобы установить обработчик деления на ноль нужно разыменовать ноль. Тлен и безысходность.

                    Именно поэтому я за lidt.
                    Ответить
                      • Х.з., у меня только х86 да лазеры гуглятся... filter bubble как он есть.
                        Ответить
                        • Марка шоколада «Lindt».

                          Я просто вспомнил, как «Нидлесс» перемешал и взболтал слова «лямбда», «Lamoda», «блямба» и ещё какие-то.
                          Ответить

Добавить комментарий для ASD__77 Отменить ответ

Я, guest, находясь в здравом уме и твердой памяти, торжественно заявляю:

    А не использовать ли нам bbcode?


    8