Recitation 6
- 
    
Explain in your own words how
foldfunctions exemplify the Abstraction Principle. - 
    
Imagine that you are working in an object-oriented (OO) language that has a linked list class but that class does not implement
fold_right—for example, the Java 8LinkedListclass. Implementfold_right. Since you can’t change the source codeLinkedList, you’ll have to implementfold_rightas a static method of a helper class. Make sure that your implementation does not modify the original list. We provide some Java starter code to help you.Feel free to do this problem in a different OO language if you don’t know Java. But if you do know Java, please use it.
Hint: getting the type parameters correct is the trickiest part of this problem. Make sure you understand the OCaml types first, before trying to represent them in Java. Implementing
Addis also a little tricky; you will probably want to create two classes that implementFunc, not just one. If it’s not obvious why, then ponder the type of OCaml’s+operator very carefully.