lucy-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Apache Wiki <wikidi...@apache.org>
Subject [Lucy Wiki] Update of "MeetUp" by MarvinHumphrey
Date Fri, 03 Apr 2015 02:03:10 GMT
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?

Mime
View raw message