@haskman 🤫
https://www.youtube.com/watch?v=fzqCBWfN2_Y
I don't think there is any need to comment.
I'm really sad that I was siding with palestine supporters before Oct 7th. It's almost funny how the people like this Oxford graduate are ready to do everything possible to side-step the holocaust-levels of slaughter showing no respect or regard to the people who have demonstrably supported their cause. Loved the #Belfast tantrum too!
@lonespelunker thank you! I went through many iterations for this, and I hope that I got the most elegant mechanic possible that addresses all the design goals. I would love to see how this works in the wild, in the adventures that don't have the clues pregenerated. Could a referee improv 4 bits of information with one being key about, say, a hex in the black wyrm of brandonsford?
. @ksyu happy to see that you're still on mastodon! 👀
Was really cool to work with you side by side 🙇
@ChrisO_wiki a child's foxhole is a young adult's grave! They'd better get used to it.
@ionchy fun fact
Π(P : Prop) $P = 0.82 £P
@ionchy it's interesting. I also can't answer this, especially not in a context of a GADT lecture, however I know what I would avoid doing while attempting to anyway. I would avoid invoking type-value dichotomy! I would probably answer like this, informally:
===
Consider a set of elements. A type then is, informally, a way to split this set into two subsets: one belonging to that type and the other not belonging to that type. As we create the set of these types, it is completely disjoint from the set of elements (it lives in a higher universe), this is why we can use elements from the intial set as we define types.
For example, we can define types that discriminate the elements based on a natural number parameter (natural numbers are normally also elements of the initial set we were considering). These kind of types are called "indexed types" in the literature.
Observe that now that we have this "type zero" universe, we can now consider it as the underlying set of elements and build up "type one" universe by creating types that discriminate the elements of "type zero".
===
I would then tie it back to GADTs like this:
===
In this mental framework then, GADTs over a way to combine several ways to include elements of the underlying into a single type, perhaps recursively.
===
Here I would point at a simple Expr GADT explaining how it allows us to capture all the Nats, all the Bools and, recursively, all the Expr Nats and Expr Bools via Add and And constructors, while at all points creating type Expr a. I would then emphasise that even though Expr a seems to be really open (i.e., one can write Expr String), it really isn't because there is no way to construct `Expr String` with the constructors we wrote down.
But it's certainly a tricky one to come up with on the spot. I wonder how did you respond? :)
That annual price at Hostinger is like $33 if you pay monthly.
A t2.medium in the Canadian data center at Amazon is $0.031/hour reserved annually. 720 hour / month = $22.32 per month.
But only 4GB RAM vs Hostinger 16GB.
#dungeon23 is going strong. Today made pages and pages of content.
May I present you with an #OSE-compatible way to run investigations?
From being a keyboard warrior to being an imaginary one. Enjoying mapping a lot while playing #BlackCrag. #OSE
@virtulis also, to uninstall it, you just rm -rf /nix and maybe clean up the profile, idk. It won't pollute the system at all.
@virtulis I have a single-click installer for multiuser nix: https://github.com/cognivore/icfpc-compute/blob/main/installer.sh
@thisismissem check this one out: https://social.doma.dev/@jonn/111207627869593841
That https://doma.dev guy
#lean #elixir #typescript #react #nix
In my non-existent free time I design and run #TTRPG
If you use tools made by genocide-apologists, you are a genocide-apologist.
#lemmy users aren't welcome here.