1. JavaScript / Говнокод #27905

    0

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    export type Maybe<T> = null | undefined | T;
    
    export interface Path {
        readonly prev: Path | undefined;
        readonly key: string | number;
        readonly typename: string | undefined;
    }
    
    /**
     * Given a Path and a key, return a new Path containing the new key.
     */
    export function addPath(
        prev: Readonly<Path> | undefined,
        key: string | number,
        typename: string | undefined,
    ): Path {
        return { prev, key, typename };
    }
    
    /**
     * Given a Path, return an Array of the path keys.
     */
    export function pathToArray(
        path: Maybe<Readonly<Path>>,
    ): Array<string | number> {
        let curr = path;
        let flattened = [];
        while (curr) {
            flattened.push(curr.key);
            curr = curr.prev;
        }
        //flattened.reverse();
        return flattened;
    }
    
    function main() {
        let pathArray = pathToArray({
            key: "path",
            prev: undefined,
            typename: undefined,
        });
        for (let x of pathArray) {
            print(x);
        }
    }

    последний коммит позволяет скомпилить и выполнить данный код. это невиданный прогресс в компиляторе :)

    и уже традиционный вопрос ... а ты там можешь наговнокодить на С/C++?

    Запостил: ASD_77, 31 Декабря 2021

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

    • произошла чудовищная ошибка, но компилить надо этот код

      export type Maybe<T> = null | undefined | T;
      
      export interface Path {
          readonly prev: Path | undefined;
          readonly key: string | number;
          readonly typename: string | undefined;
      }
      
      /**
       * Given a Path and a key, return a new Path containing the new key.
       */
      export function addPath(
          prev: Readonly<Path> | undefined,
          key: string | number,
          typename: string | undefined,
      ): Path {
          return { prev, key, typename };
      }
      
      /**
       * Given a Path, return an Array of the path keys.
       */
      export function pathToArray(
          path: Maybe<Readonly<Path>>,
      ): Array<string | number> {
          let curr = path;
          let flattened = <typeof curr.key[]>[];
          while (curr) {
              flattened.push(curr.key);
              curr = curr.prev;
          }
          //flattened.reverse();
          return flattened;
      }
      
      function main() {
          let pathArray = pathToArray({
              key: "path",
              prev: undefined,
              typename: undefined,
          });
          for (let x of pathArray) {
              if (typeof x == "string") {
                  assert(x == "path");
              }
      
              print(x);
          }
      
          print("done.");
      }
      Ответить
    • "Пациент к врачу заходит и жалуется: Доктор, у меня болезнь меня все игнорируют Все понятно Следующий!"
      Ответить
    • Опять говнокод в Maybe, мы это уже видели.
      Ответить
      • ну да. это он.. только сейчас он уже компилиться и работает
        Ответить
      • как тебе такая строка?
        let flattened = <typeof curr.key[]>[];
        Ответить
        • Лично мне нравится. А что она делает?
          Ответить
        • Какой в этом физический смысл?
          Ответить
        • auto flattened = std::vector<decltype(curr.key)>{};

          И чо?
          Ответить
          • Ничего не понял. Переведи на PHP.
            Ответить
          • А я не могу перевести на «Nim», потому что в «Nim» нет вектора...
            Ответить
            • а как там масивы работают?
              Ответить
              • Как массивы в сишке.

                Ещё есть хеш-таблицы и линкед-листы.
                Ответить
            • Позор какой
              Ответить
              • Вообще-то позор – это иметь вектор. Самая анскильная и глупая структура данных.
                Ответить
                • самая заебательская. Массив с сахаром же
                  Ответить
                  • > с сахаром
                    А можно мне с бескалорийным сахарозаменителем? Я слежу за весом.
                    Ответить
                    • Нет ничего страшного если твой бинарь наберет лишний мегабайт. Времена уже не те, никто не засмеет.
                      Ответить
                      • У меня в контроллерах это есть страшно.
                        Ответить
                        • поставь nodejs. перестанет быть страшно.
                          Ответить
                          • В контроллеры оно не станет.
                            Ответить
                            • В какой-нибудь STM32F429 с внешней драм, возможно, и удастся запихать...
                              Ответить
                              • А «node_modules» на тридцать гигабайт туда влезет?
                                Ответить
                                • SD'шку на 32 гига можно зацепить без проблем (DRAM сложнее).
                                  Ответить

    Добавить комментарий