• @superfes
    link
    573 months ago

    I’ve written some magic templates that I assume are not easy to read by those who don’t know.

    But this is seemingly unmaintainable… terrifying… and kind of neat.

  • @[email protected]
    link
    fedilink
    523 months ago

    This doesn’t actually read as serious TypeScript, moreso as someone trying to showcase unhinged code.

    I’d be happy to be proven wrong with a link to the source code so that I can look the beast in the eye.

  • @clericc
    link
    29
    edit-2
    3 months ago

    After 5 minutes of staring at it: Its typesystem sudoku. Each row and each col in the grid must add up to 15 (T<>), bit each number in the grid must be different (Df<>).

    Grid will only be a type alias for the value true (google “Dependent types”) only if all Type Parameters (wich are values) hold up to the Sudoku conditions).

    The file would not compile with “true as Grid” when grid type-aliases to false.

    Fun to understand.

    EDIT: too late

  • @thesporkeffect
    link
    283 months ago

    I like to think I can usually look at code in languages I don’t know and still get the gist of what it does but I am drawing a complete blank. Is this even slightly legible to anyone and if yes please explain

    • @[email protected]
      link
      fedilink
      English
      443 months ago

      TL;DR: Grid simplifies to true, if and only if it is a 3x3 magic square.

      full explanation
      • Fifteen is an array of length 15
      • T checks if an array of length A+B+C is equivalent to an array of length 15, thus checking if A+B+C is equal to 15
      • And is simplifies to X if A is true, else it simplifies to false
      • Df checks if A and B are Diffrent , simplifying to X if they are
      • Grid first checks if every row, column and diagonal is equal to 15, then checks if every item is unique.
    • @SloppyPuppy
      link
      3
      edit-2
      3 months ago

      Yea, i was really trying to understand… and then I was like yeah fuck this and regex too.

      • @mvirts
        link
        1
        edit-2
        3 months ago

        Gotta learn regex… C++ not so much 😹

        Fear not, template abuse is not a necessary practice

        Edit: wait what is this I thought it was c++ at first. Java? C#? Has an extends keyword

        • @immutabletest
          link
          4
          edit-2
          3 months ago

          This is a Typescript type-level computation (which is Turing-complete AFAIK). However this kind of trickery is usually done for fun and to explore how much could be achieved just on the compile step.

          • @mvirts
            link
            13 months ago

            Lol thanks that saves me a lot of googling 😹 that makes a lot of sense

  • @[email protected]
    link
    fedilink
    113 months ago

    I think I can pinpoint the exact date things went sideways. It was a dark day on Monday, October 1, 2012.

  • @[email protected]
    link
    fedilink
    10
    edit-2
    3 months ago

    Yeah, and apparently type checking/inference is trivial, says the “CTO” of Xitter. /s

  • @9point6
    link
    10
    edit-2
    3 months ago

    I’m really trying to figure out what this is used for and why it was done this way.

    I’m not having much success

    • @platypus_plumba
      link
      53 months ago

      Looks like something that checks that the rows in a grid att up to 15. Why? IDK, a game?

  • @[email protected]
    link
    fedilink
    93 months ago

    This seems like a generic type of problem that could happen to anyone. Hopefully we can learn from this and avoid appending it to our already large grid of problems.

  • THCDenton
    link
    73 months ago

    I don’t want to look at this anymore

  • velox_vulnus
    link
    fedilink
    5
    edit-2
    3 months ago

    Show that to your niece and nephew and you’ll be a certified Haxxor™

  • @[email protected]
    link
    fedilink
    33 months ago

    If TypeScript didn’t have terrible type-level ergonomics, this wouldn’t look so bad—even if this toy example is largely just a brain exercise