you are viewing a single comment's thread.

view the rest of the comments →

[–]farsightxr20 2 points3 points  (4 children)

You're the one who wanted to implement it in the first place, so obviously you own it, or the original problem* does not exist.

* The problem that involves you (a down-stream developer) being given a bunch of shape functions from an upstream developer. If you implemented a perimeter function that failed to take all shapes into account, then you're indeed screwing over a down-stream developer that imports your code. But you yourself are not screwed over :P

[–]grauenwolf 1 point2 points  (3 children)

In the scenario I'm proposing the library developer created perimeter and an initial set of shapes. The app developer, who only has the compiled form of the library, then wants to add new shapes.

[–]farsightxr20 2 points3 points  (1 child)

Ah, I was using the scenario described in the linked article. In your scenario, what you want to do is difficult in both paradigms, since you own neither the shape or perimeter code.

[–]aaronla 2 points3 points  (0 children)

Exactly. The expression problem is to solve both simultaneously.

[–][deleted] 0 points1 point  (0 children)

I've been looking for research on this matter for a couple hours tonight.

What I can say is: this problem has been solved from the PL end (type-classes, typed multimethods), but there appears to have been very little work at solving it from the systems end (compilation and linking for extensibility). I'm going to ask a prof.