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

Comment:
Partially complete first draft of 2015-04-07 meeting.

New page:
= Virtual MeetUp Tuesday April 7 =

Time: 10:00 AM Pacific / 5:00 PM GMT

Agenda:

 1.  Introductions (10 minutes)
 2.  Interfaces    (30 minutes)
 3.  Open discussion / more about interfaces (20 minutes)

General discussion questions for interfaces:

 1.  It is impossible to add a method a Go interface without breaking backwards 
compatibility.  Same with Java interfaces prior to Java 8.  Why?
 1.  Why is it possible to add methods to an abstract class without breaking 
backwards compatibility?
 1.  What is a "default method" in Java 8?  How do default methods make it 
possible to modify a Java interface without breaking backwards compatibility?
 1.  How might you emulate abstract methods in a dynamic programming language?
 1.  How might you emulate interfaces (without default methods) in a dynamic 
programming language?
 1.  How might you emulate interfaces (with default methods) in a dynamic 
programming language?
 1.  What's the difference between a "mixin" and an interface consisting 
entirely of default methods (i.e. with no abstract methods)?

Clownfish/Lucy-specific discussion questions for interfaces:

 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.  Why is duck typing easier using hashtable-based method dispatch than 
vtable-based method dispatch?

Reply via email to