exoteric said:GrantB said:*snip*There doesn't appear to be anything special about Go's notion of type equivalence beyond structural typing. C# has dynamic now, not sure the good folks want to go beyond that because dynamic allows you to apply the same programming pattern but in a less type-safe way. Another idea is to be able to coerce a type that structurally matches a different type into that type - a sort of structural cast.
Love the idea behind persistent data structures.
Would there be any value in this?
void f(dynamic IFoo arg)
{
arg.foo();
}
Where
(1) arg is of type dynamic
(2) the compiler warns when arg is used in a way not compatible with IFoo
(3) the compiler warns when an actual parameter does not implement method signatures isomorphic with IFoo
(4) the IDE provide arg with IFoo intellisense