Join GitHub today
consider two types, "person" and "frog", let's say
there are at least two problems; one is the one in the article - it's hard to come up with a complete list of methods/properties that should exactly define one of these things. in surfaces and essences they argue that in reality no categorisation has perfectly defined boundaries; so how to define the types?
another problem is what happens if i want to build a thing that is both "person-like" and "frog-like"? you can't. especially not if the differences are far away (i.e. is frog hopping like "walking"? should it be the implementation of a "walk" method? probably not; but a "move" method? probably? but what about less-clear things? and doesn't it depend on what your merging with)
in this way it seems like it's impossible to come up with strict types for anything
so here's an idea:
analogy-lang: let's you define types in a much more relaxed way; "this thing is like that thing in these ways, but different in these ways"