{ "@context":[ "https://www.w3.org/ns/activitystreams", {"Hashtag":"as:Hashtag"} ], "published":"2024-11-03T06:27:01.075Z", "attributedTo":"https://gopinath.org/actors/rahul", "replies":"https://gopinath.org/objects/TlmA1R0Udfo/replies", "to":["https://www.w3.org/ns/activitystreams#Public","https://functional.cafe/users/prophet"], "cc":["https://gopinath.org/actors/rahul/followers"], "content":"

@prophet asked this on X.

\"i'm going to regret asking, but does anyone have a *rigorous* definition of strong/weak typing as orthogonal to static/dynamic? specifically, if your explanation contains the term \"type conversions\", please explain what that means, especially in dynamically typed languages\"

I wonder if a software testers perspective can help here. For me, a strong test suite is the one that finds most bugs. Assuming that the most significant source of error is simply mistyping the intended code while programming, we can leverage mutation analysis to estimate the strength of a test suite.  That is, the strongest test suite is the one that identifies a difference between the original program, and the most number of mutants (one token variants), and the weakest one is the one that is unable to distinguish any variant from the original.

Transplanting that to type systems, I wonder if I can say: The strongest type is the type that eliminates (makes it impossible to represent) the most number of variants to the original program. 

", "mediaType":"text/html", "attachment":[], "tag":[ {"type":"Mention","name":"@prophet@functional.cafe","href":"https://functional.cafe/users/prophet"} ], "type":"Note", "id":"https://gopinath.org/objects/TlmA1R0Udfo" }