Dear Wiki user, You have subscribed to a wiki page or wiki category on "Lucy Wiki" for change notification.
The "MeetUp" page has been changed by MarvinHumphrey: https://wiki.apache.org/lucy/MeetUp?action=diff&rev1=2&rev2=3 Comment: Various improvements. Time: 10:00 AM Pacific / 5:00 PM GMT - Agenda: + Location: Lucy's dedicated Google Hangout: [[http://s.apache.org/lucy-hangout]]. + + To participate, log into Google Plus, then [[http://s.apache.org/lucy-hangout|join the videochat]]. + + === Agenda === 1. Introductions (10 minutes) 2. Interfaces (30 minutes) 3. Open discussion / more about interfaces (20 minutes) + + === Format === + + This MeetUp will take the form of a Lucy Book Club discussion: participants will answer questions prepared by other participants on the theme. Feel free to bring your own questions! General discussion questions for interfaces: @@ -25, +33 @@ 1. Should Lucy's Query class be an interface instead of an abstract class? How about Analyzer, Searcher, Matcher, Collector, Compiler, IndexReader, DataReader, DataWriter, Lexicon, Posting, Folder, FileHandle, Lock, and SortExternal -- all of which are abstract classes? 1. There are a handful of Lucy classes which are designed to be subclassed by users but are not abstract: QueryParser, IndexManager, Schema, FieldType, and Highlighter. Why is it challenging to change these to interfaces? 1. How can we change the Clownfish callback mechanism to be based on interfaces instead of classes? - 1. If we use runtime "duck typing" to establish interface compliance, 1. Should Obj#Hash_Sum be moved to a "Hasher" interface? Should Obj#Clone be moved to a "Cloner" interface? Should Obj have any methods at all? Bonus questions: - 1. What are co-variant return types? + 1. What are covariant return types? 1. Why is duck typing easier using hashtable-based method dispatch than vtable-based method dispatch? + Optional reading materials: + + * [[https://en.wikipedia.org/wiki/Mixin|Mixins]] + * [[https://docs.oracle.com/javase/tutorial/java/IandI/defaultmethods.html|Default methods]] +
