03.01.2014 20:28:17
@davidfowl Yea, thats right. Nominal subtyping does not prevent from such problems. But structural subtyping dosn't either.
|
03.01.2014 20:24:35
@davidfowl And if I ignore that, there are side effects, like electric shocks, that aren't fun either.
|
03.01.2014 20:23:58
@davidfowl Yea, that is not fun but IMHO that's ok, cause ILogger A was not built to be a substitution of ILogger B ...
|
03.01.2014 20:18:41
@davidfowl Yes, this really is an issue. But is this really an issue of nominal subtyping?
|
03.01.2014 20:16:12
@davidfowl Yust one more (vivid) example: Even if my fingers perfectly fit into the power-socket, it wouldn't be a good idea to put it into.
|
03.01.2014 20:11:52
@davidfowl Take it this way: Does it make your app more self-descriptive that a DataProtector can be ANYTHING that fits to Tuple<Func, Func>
|
03.01.2014 20:10:34
@davidfowl not sure, if there really is such a hell in C# or Java. If yes, I didn't see it.
|
03.01.2014 20:07:55
@davidfowl for me, an interface-implementation is also a is-a relationship. A DataFormat is a IDataFormat and can therefore be used as such
|
03.01.2014 20:07:55
@davidfowl for me, an interface-implementation is also a is-a relationship. A DataFormat is a IDataFormat and can therefore be used as such
|
03.01.2014 20:05:53
@davidfowl But there has to be a reason, that main-stream OO-Languages have used nominal subtyping in the last 20 years.
|
03.01.2014 20:05:53
@davidfowl But there has to be a reason, that main-stream OO-Languages have used nominal subtyping in the last 20 years.
|
03.01.2014 20:05:46
@davidfowl I understand, that from a functional point of view, structural subtyping is a nice thing ...
|
03.01.2014 20:05:46
@davidfowl I understand, that from a functional point of view, structural subtyping is a nice thing ...
|
03.01.2014 19:52:14
@davidfowl i think the reason, we have that in TypeScript and Dart is that we have to create supertypes for javascript-things subsequently.
|
03.01.2014 19:52:14
@davidfowl i think the reason, we have that in TypeScript and Dart is that we have to create supertypes for javascript-things subsequently.
|