▲ | o11c 3 hours ago | |
The critical problem with structural typing is that it requires weird and arbitrary branding when dealing with unions of singletons. | ||
▲ | whilenot-dev 12 minutes ago | parent | next [-] | |
Branding doesn't need to be weird and arbitrary, see Pythons NewType: https://docs.python.org/3/library/typing.html#typing.NewType Reading TFA now, Pythons NewType seems to be equal to Haskells newtype. Yes, it's a hack for the type checker to work around existing language semantics and feels unergonomic at times when Parse, Don't Validate needs to fall back to plain validation, but I wouldn't call it neither weird nor arbitrary. | ||
▲ | b_e_n_t_o_n 3 hours ago | parent | prev | next [-] | |
You mean like if you have two types which are identical but you want your type system to treat them as distinct? To me that's a data modelling issue rather than something wrong with the type system, but I understand how it can sometimes be unavoidable and you need to work around it. I think it also makes more sense in immutable functional languages like clojure. Oddly enough I like it in Go too, despite being very different from clojure. | ||
▲ | andyferris 2 hours ago | parent | prev [-] | |
If I understand you correctly - in popular structurally typed languages, sure. It seems ok in upcoming languages with polymorphic sum types (eg Roc “tags”) though? |