Synthesizing Object-Oriented and Functional Design to Promote Re-Use
Posted4 months agoActive4 months ago
cs.brown.eduTechstory
calmmixed
Debate
60/100
Programming ParadigmsSoftware DesignObject-Oriented ProgrammingFunctional Programming
Key topics
Programming Paradigms
Software Design
Object-Oriented Programming
Functional Programming
The paper discusses combining object-oriented and functional design to promote code reuse, sparking a discussion on the effectiveness of the proposed 'Extensible Visitor' pattern and its relation to existing solutions.
Snapshot generated from the HN discussion
Discussion Activity
Light discussionFirst comment
2d
Peak period
4
54-60h
Avg / period
3.5
Key moments
- 01Story posted
Sep 7, 2025 at 2:39 AM EDT
4 months ago
Step 01 - 02First comment
Sep 9, 2025 at 10:47 AM EDT
2d after posting
Step 02 - 03Peak activity
4 comments in 54-60h
Hottest window of the conversation
Step 03 - 04Latest activity
Sep 9, 2025 at 5:15 PM EDT
4 months ago
Step 04
Generating AI Summary...
Analyzing up to 500 comments to identify key contributors and discussion patterns
ID: 45155916Type: storyLast synced: 11/20/2025, 5:45:28 PM
Want the full context?
Jump to the original sources
Read the primary article or dive into the live Hacker News thread when you're ready.
CLOS is an object-oriented system, which solves the problem of adding new functions without modifying existing class definitions, by placing generic functions outside of class definitions.
Was this an important paper in its field?
From the conclusion:
"We have presented a programming protocol, Extensible Visitor, that can be used to construct systems with extensible recursive data domains and toolkits. It is a novel combination of the functional and object-oriented programming styles that draws on the strengths of each. The object-oriented style is essential to achieve extensibility along the data dimension, yet tools are organized in a functional fashion, enabling extensibility in the functional dimension. Systems based on the Extensible Visitor can be extended without modification to existing code or recompilation (which is an increasingly important concern)."
The strangest aspect of it is that they cite Haskell. Given the date of the paper, I would understand unfamiliarity with Haskell given the implementations[1] that were available at the time weren't very "useful" if you had any kind of latency requirements on your software. That being said it's strange that somebody in 1998 would write a paper like this, know that Haskell was a thing, and also have no knowledge of type classes, which are explicitly designed to fill the role of open type sets.
For those note in the know, functional languages tend to be able to express this open type association in various ways. Type classes are one way, another example beyond Haskell is MaPLe[2]. SML (and ML-only style OCAML) has a somewhat restricted form by way of its module and functor system, and eqtype. MLPolyR has an unrestricted form by way of row polymorphism.
[1] - https://www.haskell.org/hugs/
[2] - https://github.com/MPLLang/mpl
https://news.ycombinator.com/item?id=45155877