• superfes@lemmy.world
    link
    fedilink
    arrow-up
    57
    ·
    5 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.

  • GissaMittJobb@lemmy.ml
    link
    fedilink
    arrow-up
    54
    arrow-down
    1
    ·
    5 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@lemmy.world
    link
    fedilink
    arrow-up
    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

  • thesporkeffect@lemmy.world
    link
    fedilink
    arrow-up
    27
    ·
    5 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

    • MinekPo1@lemmy.ml
      link
      fedilink
      English
      arrow-up
      43
      ·
      5 months ago

      TL;DR: Grid<A,B,C,D,E,F,G,H> simplifies to true, if and only if it is a 3x3 magic square.

      full explanation
      • Fifteen is an array of length 15
      • T<A,B,C> 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<A,X> is simplifies to X if A is true, else it simplifies to false
      • Df<A,B,X> checks if A and B are Diffrent , simplifying to X if they are
      • Grid<A,B,C,D,E,F,G,H> first checks if every row, column and diagonal is equal to 15, then checks if every item is unique.
  • algernon@lemmy.ml
    link
    fedilink
    arrow-up
    11
    ·
    5 months ago

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

  • Aurenkin@sh.itjust.works
    link
    fedilink
    arrow-up
    10
    ·
    5 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.

  • 9point6@lemmy.world
    link
    fedilink
    arrow-up
    8
    ·
    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

  • toastal@lemmy.ml
    cake
    link
    fedilink
    arrow-up
    3
    ·
    5 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