clojure.lang.IFn, java.lang.Runnable, java.util.concurrent.Callable, MultiFnpublic final class MultiFnWithHierarchy extends clojure.lang.AFn implements MultiFn
MultiFn that is (mostly)
backwards compatible with clojure.lang.MultiFn.
Semantic changes:
clojure.lang.MultiFn.clojure.lang.Named, classes, or
an IPersistentVector containing legal dispatch
values.
MultiFn.preferMethod(Object,Object)
transitive:f.preferMethod(a,b) and
f.preferMethod(b,c) should imply
f.preferMethod(a,c), but that's not
not true in clojure.lang.MultiFn.prefers(x,y).
clojure.lang.MultiFn.prefers(x,y)
appears to imply that
f.preferMethod(x,ancestorOfY)
implies f.preferMethod(x,y).
This is not what I would expect.
clojure.lang.MultFn.prefers() ignores
the multimethod's hierarchy, so behavior is different between
multimethods that use global-hierarchy vs local.
Changed to explicitly use the local hierarchy in preference
evaluation.
See CLJ-2234.
Performance changes:
clojure.lang.IFn.D, clojure.lang.IFn.DD, clojure.lang.IFn.DDD, clojure.lang.IFn.DDDD, clojure.lang.IFn.DDDDD, clojure.lang.IFn.DDDDL, clojure.lang.IFn.DDDDO, clojure.lang.IFn.DDDL, clojure.lang.IFn.DDDLD, clojure.lang.IFn.DDDLL, clojure.lang.IFn.DDDLO, clojure.lang.IFn.DDDO, clojure.lang.IFn.DDDOD, clojure.lang.IFn.DDDOL, clojure.lang.IFn.DDDOO, clojure.lang.IFn.DDL, clojure.lang.IFn.DDLD, clojure.lang.IFn.DDLDD, clojure.lang.IFn.DDLDL, clojure.lang.IFn.DDLDO, clojure.lang.IFn.DDLL, clojure.lang.IFn.DDLLD, clojure.lang.IFn.DDLLL, clojure.lang.IFn.DDLLO, clojure.lang.IFn.DDLO, clojure.lang.IFn.DDLOD, clojure.lang.IFn.DDLOL, clojure.lang.IFn.DDLOO, clojure.lang.IFn.DDO, clojure.lang.IFn.DDOD, clojure.lang.IFn.DDODD, clojure.lang.IFn.DDODL, clojure.lang.IFn.DDODO, clojure.lang.IFn.DDOL, clojure.lang.IFn.DDOLD, clojure.lang.IFn.DDOLL, clojure.lang.IFn.DDOLO, clojure.lang.IFn.DDOO, clojure.lang.IFn.DDOOD, clojure.lang.IFn.DDOOL, clojure.lang.IFn.DDOOO, clojure.lang.IFn.DL, clojure.lang.IFn.DLD, clojure.lang.IFn.DLDD, clojure.lang.IFn.DLDDD, clojure.lang.IFn.DLDDL, clojure.lang.IFn.DLDDO, clojure.lang.IFn.DLDL, clojure.lang.IFn.DLDLD, clojure.lang.IFn.DLDLL, clojure.lang.IFn.DLDLO, clojure.lang.IFn.DLDO, clojure.lang.IFn.DLDOD, clojure.lang.IFn.DLDOL, clojure.lang.IFn.DLDOO, clojure.lang.IFn.DLL, clojure.lang.IFn.DLLD, clojure.lang.IFn.DLLDD, clojure.lang.IFn.DLLDL, clojure.lang.IFn.DLLDO, clojure.lang.IFn.DLLL, clojure.lang.IFn.DLLLD, clojure.lang.IFn.DLLLL, clojure.lang.IFn.DLLLO, clojure.lang.IFn.DLLO, clojure.lang.IFn.DLLOD, clojure.lang.IFn.DLLOL, clojure.lang.IFn.DLLOO, clojure.lang.IFn.DLO, clojure.lang.IFn.DLOD, clojure.lang.IFn.DLODD, clojure.lang.IFn.DLODL, clojure.lang.IFn.DLODO, clojure.lang.IFn.DLOL, clojure.lang.IFn.DLOLD, clojure.lang.IFn.DLOLL, clojure.lang.IFn.DLOLO, clojure.lang.IFn.DLOO, clojure.lang.IFn.DLOOD, clojure.lang.IFn.DLOOL, clojure.lang.IFn.DLOOO, clojure.lang.IFn.DO, clojure.lang.IFn.DOD, clojure.lang.IFn.DODD, clojure.lang.IFn.DODDD, clojure.lang.IFn.DODDL, clojure.lang.IFn.DODDO, clojure.lang.IFn.DODL, clojure.lang.IFn.DODLD, clojure.lang.IFn.DODLL, clojure.lang.IFn.DODLO, clojure.lang.IFn.DODO, clojure.lang.IFn.DODOD, clojure.lang.IFn.DODOL, clojure.lang.IFn.DODOO, clojure.lang.IFn.DOL, clojure.lang.IFn.DOLD, clojure.lang.IFn.DOLDD, clojure.lang.IFn.DOLDL, clojure.lang.IFn.DOLDO, clojure.lang.IFn.DOLL, clojure.lang.IFn.DOLLD, clojure.lang.IFn.DOLLL, clojure.lang.IFn.DOLLO, clojure.lang.IFn.DOLO, clojure.lang.IFn.DOLOD, clojure.lang.IFn.DOLOL, clojure.lang.IFn.DOLOO, clojure.lang.IFn.DOO, clojure.lang.IFn.DOOD, clojure.lang.IFn.DOODD, clojure.lang.IFn.DOODL, clojure.lang.IFn.DOODO, clojure.lang.IFn.DOOL, clojure.lang.IFn.DOOLD, clojure.lang.IFn.DOOLL, clojure.lang.IFn.DOOLO, clojure.lang.IFn.DOOO, clojure.lang.IFn.DOOOD, clojure.lang.IFn.DOOOL, clojure.lang.IFn.DOOOO, clojure.lang.IFn.L, clojure.lang.IFn.LD, clojure.lang.IFn.LDD, clojure.lang.IFn.LDDD, clojure.lang.IFn.LDDDD, clojure.lang.IFn.LDDDL, clojure.lang.IFn.LDDDO, clojure.lang.IFn.LDDL, clojure.lang.IFn.LDDLD, clojure.lang.IFn.LDDLL, clojure.lang.IFn.LDDLO, clojure.lang.IFn.LDDO, clojure.lang.IFn.LDDOD, clojure.lang.IFn.LDDOL, clojure.lang.IFn.LDDOO, clojure.lang.IFn.LDL, clojure.lang.IFn.LDLD, clojure.lang.IFn.LDLDD, clojure.lang.IFn.LDLDL, clojure.lang.IFn.LDLDO, clojure.lang.IFn.LDLL, clojure.lang.IFn.LDLLD, clojure.lang.IFn.LDLLL, clojure.lang.IFn.LDLLO, clojure.lang.IFn.LDLO, clojure.lang.IFn.LDLOD, clojure.lang.IFn.LDLOL, clojure.lang.IFn.LDLOO, clojure.lang.IFn.LDO, clojure.lang.IFn.LDOD, clojure.lang.IFn.LDODD, clojure.lang.IFn.LDODL, clojure.lang.IFn.LDODO, clojure.lang.IFn.LDOL, clojure.lang.IFn.LDOLD, clojure.lang.IFn.LDOLL, clojure.lang.IFn.LDOLO, clojure.lang.IFn.LDOO, clojure.lang.IFn.LDOOD, clojure.lang.IFn.LDOOL, clojure.lang.IFn.LDOOO, clojure.lang.IFn.LL, clojure.lang.IFn.LLD, clojure.lang.IFn.LLDD, clojure.lang.IFn.LLDDD, clojure.lang.IFn.LLDDL, clojure.lang.IFn.LLDDO, clojure.lang.IFn.LLDL, clojure.lang.IFn.LLDLD, clojure.lang.IFn.LLDLL, clojure.lang.IFn.LLDLO, clojure.lang.IFn.LLDO, clojure.lang.IFn.LLDOD, clojure.lang.IFn.LLDOL, clojure.lang.IFn.LLDOO, clojure.lang.IFn.LLL, clojure.lang.IFn.LLLD, clojure.lang.IFn.LLLDD, clojure.lang.IFn.LLLDL, clojure.lang.IFn.LLLDO, clojure.lang.IFn.LLLL, clojure.lang.IFn.LLLLD, clojure.lang.IFn.LLLLL, clojure.lang.IFn.LLLLO, clojure.lang.IFn.LLLO, clojure.lang.IFn.LLLOD, clojure.lang.IFn.LLLOL, clojure.lang.IFn.LLLOO, clojure.lang.IFn.LLO, clojure.lang.IFn.LLOD, clojure.lang.IFn.LLODD, clojure.lang.IFn.LLODL, clojure.lang.IFn.LLODO, clojure.lang.IFn.LLOL, clojure.lang.IFn.LLOLD, clojure.lang.IFn.LLOLL, clojure.lang.IFn.LLOLO, clojure.lang.IFn.LLOO, clojure.lang.IFn.LLOOD, clojure.lang.IFn.LLOOL, clojure.lang.IFn.LLOOO, clojure.lang.IFn.LO, clojure.lang.IFn.LOD, clojure.lang.IFn.LODD, clojure.lang.IFn.LODDD, clojure.lang.IFn.LODDL, clojure.lang.IFn.LODDO, clojure.lang.IFn.LODL, clojure.lang.IFn.LODLD, clojure.lang.IFn.LODLL, clojure.lang.IFn.LODLO, clojure.lang.IFn.LODO, clojure.lang.IFn.LODOD, clojure.lang.IFn.LODOL, clojure.lang.IFn.LODOO, clojure.lang.IFn.LOL, clojure.lang.IFn.LOLD, clojure.lang.IFn.LOLDD, clojure.lang.IFn.LOLDL, clojure.lang.IFn.LOLDO, clojure.lang.IFn.LOLL, clojure.lang.IFn.LOLLD, clojure.lang.IFn.LOLLL, clojure.lang.IFn.LOLLO, clojure.lang.IFn.LOLO, clojure.lang.IFn.LOLOD, clojure.lang.IFn.LOLOL, clojure.lang.IFn.LOLOO, clojure.lang.IFn.LOO, clojure.lang.IFn.LOOD, clojure.lang.IFn.LOODD, clojure.lang.IFn.LOODL, clojure.lang.IFn.LOODO, clojure.lang.IFn.LOOL, clojure.lang.IFn.LOOLD, clojure.lang.IFn.LOOLL, clojure.lang.IFn.LOOLO, clojure.lang.IFn.LOOO, clojure.lang.IFn.LOOOD, clojure.lang.IFn.LOOOL, clojure.lang.IFn.LOOOO, clojure.lang.IFn.OD, clojure.lang.IFn.ODD, clojure.lang.IFn.ODDD, clojure.lang.IFn.ODDDD, clojure.lang.IFn.ODDDL, clojure.lang.IFn.ODDDO, clojure.lang.IFn.ODDL, clojure.lang.IFn.ODDLD, clojure.lang.IFn.ODDLL, clojure.lang.IFn.ODDLO, clojure.lang.IFn.ODDO, clojure.lang.IFn.ODDOD, clojure.lang.IFn.ODDOL, clojure.lang.IFn.ODDOO, clojure.lang.IFn.ODL, clojure.lang.IFn.ODLD, clojure.lang.IFn.ODLDD, clojure.lang.IFn.ODLDL, clojure.lang.IFn.ODLDO, clojure.lang.IFn.ODLL, clojure.lang.IFn.ODLLD, clojure.lang.IFn.ODLLL, clojure.lang.IFn.ODLLO, clojure.lang.IFn.ODLO, clojure.lang.IFn.ODLOD, clojure.lang.IFn.ODLOL, clojure.lang.IFn.ODLOO, clojure.lang.IFn.ODO, clojure.lang.IFn.ODOD, clojure.lang.IFn.ODODD, clojure.lang.IFn.ODODL, clojure.lang.IFn.ODODO, clojure.lang.IFn.ODOL, clojure.lang.IFn.ODOLD, clojure.lang.IFn.ODOLL, clojure.lang.IFn.ODOLO, clojure.lang.IFn.ODOO, clojure.lang.IFn.ODOOD, clojure.lang.IFn.ODOOL, clojure.lang.IFn.ODOOO, clojure.lang.IFn.OL, clojure.lang.IFn.OLD, clojure.lang.IFn.OLDD, clojure.lang.IFn.OLDDD, clojure.lang.IFn.OLDDL, clojure.lang.IFn.OLDDO, clojure.lang.IFn.OLDL, clojure.lang.IFn.OLDLD, clojure.lang.IFn.OLDLL, clojure.lang.IFn.OLDLO, clojure.lang.IFn.OLDO, clojure.lang.IFn.OLDOD, clojure.lang.IFn.OLDOL, clojure.lang.IFn.OLDOO, clojure.lang.IFn.OLL, clojure.lang.IFn.OLLD, clojure.lang.IFn.OLLDD, clojure.lang.IFn.OLLDL, clojure.lang.IFn.OLLDO, clojure.lang.IFn.OLLL, clojure.lang.IFn.OLLLD, clojure.lang.IFn.OLLLL, clojure.lang.IFn.OLLLO, clojure.lang.IFn.OLLO, clojure.lang.IFn.OLLOD, clojure.lang.IFn.OLLOL, clojure.lang.IFn.OLLOO, clojure.lang.IFn.OLO, clojure.lang.IFn.OLOD, clojure.lang.IFn.OLODD, clojure.lang.IFn.OLODL, clojure.lang.IFn.OLODO, clojure.lang.IFn.OLOL, clojure.lang.IFn.OLOLD, clojure.lang.IFn.OLOLL, clojure.lang.IFn.OLOLO, clojure.lang.IFn.OLOO, clojure.lang.IFn.OLOOD, clojure.lang.IFn.OLOOL, clojure.lang.IFn.OLOOO, clojure.lang.IFn.OOD, clojure.lang.IFn.OODD, clojure.lang.IFn.OODDD, clojure.lang.IFn.OODDL, clojure.lang.IFn.OODDO, clojure.lang.IFn.OODL, clojure.lang.IFn.OODLD, clojure.lang.IFn.OODLL, clojure.lang.IFn.OODLO, clojure.lang.IFn.OODO, clojure.lang.IFn.OODOD, clojure.lang.IFn.OODOL, clojure.lang.IFn.OODOO, clojure.lang.IFn.OOL, clojure.lang.IFn.OOLD, clojure.lang.IFn.OOLDD, clojure.lang.IFn.OOLDL, clojure.lang.IFn.OOLDO, clojure.lang.IFn.OOLL, clojure.lang.IFn.OOLLD, clojure.lang.IFn.OOLLL, clojure.lang.IFn.OOLLO, clojure.lang.IFn.OOLO, clojure.lang.IFn.OOLOD, clojure.lang.IFn.OOLOL, clojure.lang.IFn.OOLOO, clojure.lang.IFn.OOOD, clojure.lang.IFn.OOODD, clojure.lang.IFn.OOODL, clojure.lang.IFn.OOODO, clojure.lang.IFn.OOOL, clojure.lang.IFn.OOOLD, clojure.lang.IFn.OOOLL, clojure.lang.IFn.OOOLO, clojure.lang.IFn.OOOOD, clojure.lang.IFn.OOOOL| Constructor | Description |
|---|---|
MultiFnWithHierarchy(java.lang.String n,
clojure.lang.IFn dispatchF,
java.lang.Object defaultd,
clojure.lang.IRef hierarky) |
| Modifier and Type | Method | Description |
|---|---|---|
MultiFn |
addMethod(java.lang.Object x,
clojure.lang.IFn method) |
Make
f the defined method for dispatch value
x. |
boolean |
dominates(java.lang.Object x,
java.lang.Object y) |
Is a method defined for
x preferred to a
method defined for y? |
clojure.lang.IFn |
getMethod(java.lang.Object x) |
Look up the most preferred method for
dispatch value
x, if any applicable methods are
defined. |
clojure.lang.IPersistentMap |
getMethodTable() |
Return the table of defined methods,
a map from dispatch values to functions.
|
clojure.lang.IPersistentMap |
getPreferTable() |
Return the table of explicit method preferences,
a map from dispatch value to set of dispatch values,
with the interpretation a method defined for the key dispatch
value is preferred to methods defined for any of the dispatch
values in the set.
|
java.lang.Object |
invoke() |
|
java.lang.Object |
invoke(java.lang.Object arg1) |
|
java.lang.Object |
invoke(java.lang.Object arg1,
java.lang.Object arg2) |
|
java.lang.Object |
invoke(java.lang.Object arg1,
java.lang.Object arg2,
java.lang.Object arg3) |
|
java.lang.Object |
invoke(java.lang.Object arg1,
java.lang.Object arg2,
java.lang.Object arg3,
java.lang.Object arg4) |
|
java.lang.Object |
invoke(java.lang.Object arg1,
java.lang.Object arg2,
java.lang.Object arg3,
java.lang.Object arg4,
java.lang.Object arg5) |
|
java.lang.Object |
invoke(java.lang.Object arg1,
java.lang.Object arg2,
java.lang.Object arg3,
java.lang.Object arg4,
java.lang.Object arg5,
java.lang.Object arg6) |
|
java.lang.Object |
invoke(java.lang.Object arg1,
java.lang.Object arg2,
java.lang.Object arg3,
java.lang.Object arg4,
java.lang.Object arg5,
java.lang.Object arg6,
java.lang.Object arg7) |
|
java.lang.Object |
invoke(java.lang.Object arg1,
java.lang.Object arg2,
java.lang.Object arg3,
java.lang.Object arg4,
java.lang.Object arg5,
java.lang.Object arg6,
java.lang.Object arg7,
java.lang.Object arg8) |
|
java.lang.Object |
invoke(java.lang.Object arg1,
java.lang.Object arg2,
java.lang.Object arg3,
java.lang.Object arg4,
java.lang.Object arg5,
java.lang.Object arg6,
java.lang.Object arg7,
java.lang.Object arg8,
java.lang.Object arg9) |
|
java.lang.Object |
invoke(java.lang.Object arg1,
java.lang.Object arg2,
java.lang.Object arg3,
java.lang.Object arg4,
java.lang.Object arg5,
java.lang.Object arg6,
java.lang.Object arg7,
java.lang.Object arg8,
java.lang.Object arg9,
java.lang.Object arg10) |
|
java.lang.Object |
invoke(java.lang.Object arg1,
java.lang.Object arg2,
java.lang.Object arg3,
java.lang.Object arg4,
java.lang.Object arg5,
java.lang.Object arg6,
java.lang.Object arg7,
java.lang.Object arg8,
java.lang.Object arg9,
java.lang.Object arg10,
java.lang.Object arg11) |
|
java.lang.Object |
invoke(java.lang.Object arg1,
java.lang.Object arg2,
java.lang.Object arg3,
java.lang.Object arg4,
java.lang.Object arg5,
java.lang.Object arg6,
java.lang.Object arg7,
java.lang.Object arg8,
java.lang.Object arg9,
java.lang.Object arg10,
java.lang.Object arg11,
java.lang.Object arg12) |
|
java.lang.Object |
invoke(java.lang.Object arg1,
java.lang.Object arg2,
java.lang.Object arg3,
java.lang.Object arg4,
java.lang.Object arg5,
java.lang.Object arg6,
java.lang.Object arg7,
java.lang.Object arg8,
java.lang.Object arg9,
java.lang.Object arg10,
java.lang.Object arg11,
java.lang.Object arg12,
java.lang.Object arg13) |
|
java.lang.Object |
invoke(java.lang.Object arg1,
java.lang.Object arg2,
java.lang.Object arg3,
java.lang.Object arg4,
java.lang.Object arg5,
java.lang.Object arg6,
java.lang.Object arg7,
java.lang.Object arg8,
java.lang.Object arg9,
java.lang.Object arg10,
java.lang.Object arg11,
java.lang.Object arg12,
java.lang.Object arg13,
java.lang.Object arg14) |
|
java.lang.Object |
invoke(java.lang.Object arg1,
java.lang.Object arg2,
java.lang.Object arg3,
java.lang.Object arg4,
java.lang.Object arg5,
java.lang.Object arg6,
java.lang.Object arg7,
java.lang.Object arg8,
java.lang.Object arg9,
java.lang.Object arg10,
java.lang.Object arg11,
java.lang.Object arg12,
java.lang.Object arg13,
java.lang.Object arg14,
java.lang.Object arg15) |
|
java.lang.Object |
invoke(java.lang.Object arg1,
java.lang.Object arg2,
java.lang.Object arg3,
java.lang.Object arg4,
java.lang.Object arg5,
java.lang.Object arg6,
java.lang.Object arg7,
java.lang.Object arg8,
java.lang.Object arg9,
java.lang.Object arg10,
java.lang.Object arg11,
java.lang.Object arg12,
java.lang.Object arg13,
java.lang.Object arg14,
java.lang.Object arg15,
java.lang.Object arg16) |
|
java.lang.Object |
invoke(java.lang.Object arg1,
java.lang.Object arg2,
java.lang.Object arg3,
java.lang.Object arg4,
java.lang.Object arg5,
java.lang.Object arg6,
java.lang.Object arg7,
java.lang.Object arg8,
java.lang.Object arg9,
java.lang.Object arg10,
java.lang.Object arg11,
java.lang.Object arg12,
java.lang.Object arg13,
java.lang.Object arg14,
java.lang.Object arg15,
java.lang.Object arg16,
java.lang.Object arg17) |
|
java.lang.Object |
invoke(java.lang.Object arg1,
java.lang.Object arg2,
java.lang.Object arg3,
java.lang.Object arg4,
java.lang.Object arg5,
java.lang.Object arg6,
java.lang.Object arg7,
java.lang.Object arg8,
java.lang.Object arg9,
java.lang.Object arg10,
java.lang.Object arg11,
java.lang.Object arg12,
java.lang.Object arg13,
java.lang.Object arg14,
java.lang.Object arg15,
java.lang.Object arg16,
java.lang.Object arg17,
java.lang.Object arg18) |
|
java.lang.Object |
invoke(java.lang.Object arg1,
java.lang.Object arg2,
java.lang.Object arg3,
java.lang.Object arg4,
java.lang.Object arg5,
java.lang.Object arg6,
java.lang.Object arg7,
java.lang.Object arg8,
java.lang.Object arg9,
java.lang.Object arg10,
java.lang.Object arg11,
java.lang.Object arg12,
java.lang.Object arg13,
java.lang.Object arg14,
java.lang.Object arg15,
java.lang.Object arg16,
java.lang.Object arg17,
java.lang.Object arg18,
java.lang.Object arg19) |
|
java.lang.Object |
invoke(java.lang.Object arg1,
java.lang.Object arg2,
java.lang.Object arg3,
java.lang.Object arg4,
java.lang.Object arg5,
java.lang.Object arg6,
java.lang.Object arg7,
java.lang.Object arg8,
java.lang.Object arg9,
java.lang.Object arg10,
java.lang.Object arg11,
java.lang.Object arg12,
java.lang.Object arg13,
java.lang.Object arg14,
java.lang.Object arg15,
java.lang.Object arg16,
java.lang.Object arg17,
java.lang.Object arg18,
java.lang.Object arg19,
java.lang.Object arg20) |
|
java.lang.Object |
invoke(java.lang.Object arg1,
java.lang.Object arg2,
java.lang.Object arg3,
java.lang.Object arg4,
java.lang.Object arg5,
java.lang.Object arg6,
java.lang.Object arg7,
java.lang.Object arg8,
java.lang.Object arg9,
java.lang.Object arg10,
java.lang.Object arg11,
java.lang.Object arg12,
java.lang.Object arg13,
java.lang.Object arg14,
java.lang.Object arg15,
java.lang.Object arg16,
java.lang.Object arg17,
java.lang.Object arg18,
java.lang.Object arg19,
java.lang.Object arg20,
java.lang.Object... args) |
|
boolean |
isA(java.lang.Object x,
java.lang.Object y) |
Are methods defined for
y applicable to
x? |
boolean |
isLegalDispatchValue(java.lang.Object x) |
Is
x a legal dispatch value for this
MultiFn? |
MultiFn |
preferMethod(java.lang.Object x,
java.lang.Object y) |
Prefer a method defined for dispatch value
x
to one defined for y. |
MultiFn |
removeMethod(java.lang.Object x) |
Removes the defined method for dispatch value
x, if there is one. |
MultiFn |
reset() |
Clear the
MultiFn, removing all defined
methods and preferences, and emptying the cache. |
checkLegalDispatchValuepublic MultiFnWithHierarchy(java.lang.String n,
clojure.lang.IFn dispatchF,
java.lang.Object defaultd,
clojure.lang.IRef hierarky)
public final boolean isLegalDispatchValue(java.lang.Object x)
MultiFnx a legal dispatch value for this
MultiFn?
For performance reasons, some implementations of
MultiFn may restrict kinds of dispatch values
they support.
Note: 'Legal' means it is possible to define methods for
x, not that one has already been defined.
isLegalDispatchValue in interface MultiFnpublic final clojure.lang.IPersistentMap getMethodTable()
MultiFngetMethodTable in interface MultiFnclojure.lang.IPersistentMappublic final clojure.lang.IPersistentMap getPreferTable()
MultiFngetPreferTable in interface MultiFnclojure.lang.IPersistentMappublic final MultiFn reset()
MultiFnMultiFn, removing all defined
methods and preferences, and emptying the cache.public final MultiFn addMethod(java.lang.Object x, clojure.lang.IFn method)
MultiFnf the defined method for dispatch value
x.public final MultiFn removeMethod(java.lang.Object x)
MultiFnx, if there is one. If not, does nothing.removeMethod in interface MultiFnMultiFn.public final MultiFn preferMethod(java.lang.Object x, java.lang.Object y)
MultiFnx
to one defined for y.preferMethod in interface MultiFnMultiFn.public final boolean isA(java.lang.Object x,
java.lang.Object y)
MultiFny applicable to
x?public final boolean dominates(java.lang.Object x,
java.lang.Object y)
MultiFnx preferred to a
method defined for y?public final clojure.lang.IFn getMethod(java.lang.Object x)
MultiFnx, if any applicable methods are
defined.
To keep method lookup fast, does NOT check that dispatch
value is legal,
just returning null in that case.public final java.lang.Object invoke()
invoke in interface clojure.lang.IFninvoke in class clojure.lang.AFnpublic final java.lang.Object invoke(java.lang.Object arg1)
invoke in interface clojure.lang.IFninvoke in class clojure.lang.AFnpublic final java.lang.Object invoke(java.lang.Object arg1,
java.lang.Object arg2)
invoke in interface clojure.lang.IFninvoke in class clojure.lang.AFnpublic final java.lang.Object invoke(java.lang.Object arg1,
java.lang.Object arg2,
java.lang.Object arg3)
invoke in interface clojure.lang.IFninvoke in class clojure.lang.AFnpublic final java.lang.Object invoke(java.lang.Object arg1,
java.lang.Object arg2,
java.lang.Object arg3,
java.lang.Object arg4)
invoke in interface clojure.lang.IFninvoke in class clojure.lang.AFnpublic final java.lang.Object invoke(java.lang.Object arg1,
java.lang.Object arg2,
java.lang.Object arg3,
java.lang.Object arg4,
java.lang.Object arg5)
invoke in interface clojure.lang.IFninvoke in class clojure.lang.AFnpublic final java.lang.Object invoke(java.lang.Object arg1,
java.lang.Object arg2,
java.lang.Object arg3,
java.lang.Object arg4,
java.lang.Object arg5,
java.lang.Object arg6)
invoke in interface clojure.lang.IFninvoke in class clojure.lang.AFnpublic final java.lang.Object invoke(java.lang.Object arg1,
java.lang.Object arg2,
java.lang.Object arg3,
java.lang.Object arg4,
java.lang.Object arg5,
java.lang.Object arg6,
java.lang.Object arg7)
invoke in interface clojure.lang.IFninvoke in class clojure.lang.AFnpublic final java.lang.Object invoke(java.lang.Object arg1,
java.lang.Object arg2,
java.lang.Object arg3,
java.lang.Object arg4,
java.lang.Object arg5,
java.lang.Object arg6,
java.lang.Object arg7,
java.lang.Object arg8)
invoke in interface clojure.lang.IFninvoke in class clojure.lang.AFnpublic final java.lang.Object invoke(java.lang.Object arg1,
java.lang.Object arg2,
java.lang.Object arg3,
java.lang.Object arg4,
java.lang.Object arg5,
java.lang.Object arg6,
java.lang.Object arg7,
java.lang.Object arg8,
java.lang.Object arg9)
invoke in interface clojure.lang.IFninvoke in class clojure.lang.AFnpublic final java.lang.Object invoke(java.lang.Object arg1,
java.lang.Object arg2,
java.lang.Object arg3,
java.lang.Object arg4,
java.lang.Object arg5,
java.lang.Object arg6,
java.lang.Object arg7,
java.lang.Object arg8,
java.lang.Object arg9,
java.lang.Object arg10)
invoke in interface clojure.lang.IFninvoke in class clojure.lang.AFnpublic final java.lang.Object invoke(java.lang.Object arg1,
java.lang.Object arg2,
java.lang.Object arg3,
java.lang.Object arg4,
java.lang.Object arg5,
java.lang.Object arg6,
java.lang.Object arg7,
java.lang.Object arg8,
java.lang.Object arg9,
java.lang.Object arg10,
java.lang.Object arg11)
invoke in interface clojure.lang.IFninvoke in class clojure.lang.AFnpublic final java.lang.Object invoke(java.lang.Object arg1,
java.lang.Object arg2,
java.lang.Object arg3,
java.lang.Object arg4,
java.lang.Object arg5,
java.lang.Object arg6,
java.lang.Object arg7,
java.lang.Object arg8,
java.lang.Object arg9,
java.lang.Object arg10,
java.lang.Object arg11,
java.lang.Object arg12)
invoke in interface clojure.lang.IFninvoke in class clojure.lang.AFnpublic final java.lang.Object invoke(java.lang.Object arg1,
java.lang.Object arg2,
java.lang.Object arg3,
java.lang.Object arg4,
java.lang.Object arg5,
java.lang.Object arg6,
java.lang.Object arg7,
java.lang.Object arg8,
java.lang.Object arg9,
java.lang.Object arg10,
java.lang.Object arg11,
java.lang.Object arg12,
java.lang.Object arg13)
invoke in interface clojure.lang.IFninvoke in class clojure.lang.AFnpublic final java.lang.Object invoke(java.lang.Object arg1,
java.lang.Object arg2,
java.lang.Object arg3,
java.lang.Object arg4,
java.lang.Object arg5,
java.lang.Object arg6,
java.lang.Object arg7,
java.lang.Object arg8,
java.lang.Object arg9,
java.lang.Object arg10,
java.lang.Object arg11,
java.lang.Object arg12,
java.lang.Object arg13,
java.lang.Object arg14)
invoke in interface clojure.lang.IFninvoke in class clojure.lang.AFnpublic final java.lang.Object invoke(java.lang.Object arg1,
java.lang.Object arg2,
java.lang.Object arg3,
java.lang.Object arg4,
java.lang.Object arg5,
java.lang.Object arg6,
java.lang.Object arg7,
java.lang.Object arg8,
java.lang.Object arg9,
java.lang.Object arg10,
java.lang.Object arg11,
java.lang.Object arg12,
java.lang.Object arg13,
java.lang.Object arg14,
java.lang.Object arg15)
invoke in interface clojure.lang.IFninvoke in class clojure.lang.AFnpublic final java.lang.Object invoke(java.lang.Object arg1,
java.lang.Object arg2,
java.lang.Object arg3,
java.lang.Object arg4,
java.lang.Object arg5,
java.lang.Object arg6,
java.lang.Object arg7,
java.lang.Object arg8,
java.lang.Object arg9,
java.lang.Object arg10,
java.lang.Object arg11,
java.lang.Object arg12,
java.lang.Object arg13,
java.lang.Object arg14,
java.lang.Object arg15,
java.lang.Object arg16)
invoke in interface clojure.lang.IFninvoke in class clojure.lang.AFnpublic final java.lang.Object invoke(java.lang.Object arg1,
java.lang.Object arg2,
java.lang.Object arg3,
java.lang.Object arg4,
java.lang.Object arg5,
java.lang.Object arg6,
java.lang.Object arg7,
java.lang.Object arg8,
java.lang.Object arg9,
java.lang.Object arg10,
java.lang.Object arg11,
java.lang.Object arg12,
java.lang.Object arg13,
java.lang.Object arg14,
java.lang.Object arg15,
java.lang.Object arg16,
java.lang.Object arg17)
invoke in interface clojure.lang.IFninvoke in class clojure.lang.AFnpublic final java.lang.Object invoke(java.lang.Object arg1,
java.lang.Object arg2,
java.lang.Object arg3,
java.lang.Object arg4,
java.lang.Object arg5,
java.lang.Object arg6,
java.lang.Object arg7,
java.lang.Object arg8,
java.lang.Object arg9,
java.lang.Object arg10,
java.lang.Object arg11,
java.lang.Object arg12,
java.lang.Object arg13,
java.lang.Object arg14,
java.lang.Object arg15,
java.lang.Object arg16,
java.lang.Object arg17,
java.lang.Object arg18)
invoke in interface clojure.lang.IFninvoke in class clojure.lang.AFnpublic final java.lang.Object invoke(java.lang.Object arg1,
java.lang.Object arg2,
java.lang.Object arg3,
java.lang.Object arg4,
java.lang.Object arg5,
java.lang.Object arg6,
java.lang.Object arg7,
java.lang.Object arg8,
java.lang.Object arg9,
java.lang.Object arg10,
java.lang.Object arg11,
java.lang.Object arg12,
java.lang.Object arg13,
java.lang.Object arg14,
java.lang.Object arg15,
java.lang.Object arg16,
java.lang.Object arg17,
java.lang.Object arg18,
java.lang.Object arg19)
invoke in interface clojure.lang.IFninvoke in class clojure.lang.AFnpublic final java.lang.Object invoke(java.lang.Object arg1,
java.lang.Object arg2,
java.lang.Object arg3,
java.lang.Object arg4,
java.lang.Object arg5,
java.lang.Object arg6,
java.lang.Object arg7,
java.lang.Object arg8,
java.lang.Object arg9,
java.lang.Object arg10,
java.lang.Object arg11,
java.lang.Object arg12,
java.lang.Object arg13,
java.lang.Object arg14,
java.lang.Object arg15,
java.lang.Object arg16,
java.lang.Object arg17,
java.lang.Object arg18,
java.lang.Object arg19,
java.lang.Object arg20)
invoke in interface clojure.lang.IFninvoke in class clojure.lang.AFnpublic final java.lang.Object invoke(java.lang.Object arg1,
java.lang.Object arg2,
java.lang.Object arg3,
java.lang.Object arg4,
java.lang.Object arg5,
java.lang.Object arg6,
java.lang.Object arg7,
java.lang.Object arg8,
java.lang.Object arg9,
java.lang.Object arg10,
java.lang.Object arg11,
java.lang.Object arg12,
java.lang.Object arg13,
java.lang.Object arg14,
java.lang.Object arg15,
java.lang.Object arg16,
java.lang.Object arg17,
java.lang.Object arg18,
java.lang.Object arg19,
java.lang.Object arg20,
java.lang.Object... args)
invoke in interface clojure.lang.IFninvoke in class clojure.lang.AFnCopyright © 2017. All rights reserved.