• @[email protected]
    link
    fedilink
    585 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
    535 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.

  • @[email protected]
    cake
    link
    fedilink
    30
    edit-2
    5 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

  • @[email protected]
    link
    fedilink
    285 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
      445 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.
  • @[email protected]
    link
    fedilink
    115 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
    5 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

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

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

  • @Aurenkin
    link
    95 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.

  • loaf
    link
    English
    75 months ago

    My soul hurts

  • velox_vulnus
    link
    fedilink
    5
    edit-2
    5 months ago

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

  • @[email protected]
    link
    fedilink
    35 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