Remix.run Logo
sfn42 5 hours ago

Lots of languages can infer types. And your last example with the colors is just a dictionary.

grumpyprole 5 hours ago | parent | next [-]

Most languages have poor support for structural types though. If you try and join two records together (like a SQL join), what will your favourite language infer then?

sfn42 4 hours ago | parent [-]

C# has anonymous types which is pretty much the same thing. Though I prefer to declare actual types for most usecases, I'll only use anonymous types for intermediate results and such.

grumpyprole 4 hours ago | parent [-]

I certainly don't mean to knock nominal types. But I think structural types are more fundamental. A language would only need a single "newtype" or "nominal" keyword to create nominal types from structural types.

lock1 an hour ago | parent [-]

Why structural is more fundamental?

C#'s anonymous type shares some flexibility of structural type system even though it still a nominal type.

  > A language would only need a single "newtype" or "nominal" keyword to create nominal types from structural types.
I think you also can add `structural` keyword & apply structural type system in generally nominal type system as well if we're talking about adding feature.
sheept 5 hours ago | parent | prev | next [-]

dictionaries generally aren't guaranteed to contain an entry for every possible value of the key type. while you could implement the colors example with a dictionary, ideally you'd want the type system to assure that given a Color, there will be a string associated with it

vips7L 5 hours ago | parent [-]

Sounds like enums with extra steps.

socalgal2 an hour ago | parent | next [-]

it’s Enuma associated with data without having to repeat yourself

If you have to define the Enums in one place and then repeat them all in another just to associate data with each one you’ve failed

epolanski 3 hours ago | parent | prev [-]

Enums aren't type safe in typescript

fuzzy2 5 hours ago | parent | prev [-]

It's not a dictionary (type-wise). "as const" is the magic ingredient.