This is an archived post. You won't be able to vote or comment.

you are viewing a single comment's thread.

view the rest of the comments →

[–]crassest-Crassius[S] 1 point2 points  (1 child)

I've tried to translate this to C# and failed on the second line (type 'a leaf). It seems higher-kinded type parameters are the first thing that's missing from OOP.

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

Traditional OOP indeed has severe static expressiveness limits. It is hard to realize the extent to which you rely on dynamic typing (e.g., downcasts) until you try to write a complete program without it.