coady committed 40edb26

Edited online

  • Participants
  • Parent commits 812a016

Comments (0)

Files changed (1)

-== Welcome ==
+**Multiple argument dispatching**
-Welcome to your wiki! This is the default page we've installed for your convenience. Go ahead and edit it.
-=== Wiki features ===
-This wiki uses the [[|Creole]] syntax, and is fully compatible with the 1.0 specification.
-The wiki itself is actually a mercurial repository, which means you can clone it, edit it locally/offline, add images or any other file type, and push it back to us. It will be live immediately.
-Go ahead and try:
+Call //multimethod// on a variable number of types.
+It returns a decorator which finds the multimethod of the same name,
+creating it if necessary, and adds that function to it.
+For example:
-$ hg clone
+    @multimethod(*types)
+    def func(*args):
+        pass
-Wiki pages are normal files, with the .wiki extension. You can edit them locally, as well as creating new ones.
+//func// is now a multimethod which will delegate to the above function,
+when called with arguments of the specified types.  If an exact match
+can't be found, the next closest method will be called (and cached).
+A function can have more than one multimethod decorator.
-=== Syntax highlighting ===
-You can also highlight snippets of text, we use the excellent [[|Pygments]] library.
-Here's an example of some Python code:
-def wiki_rocks(text):
-    formatter = lambda t: "funky"+t
-    return formatter(text)
-You can check out the source of this page to see how that's done, and make sure to bookmark [[|the vast library of Pygment lexers]], we accept the 'short name' or the 'mimetype' of anything in there.
-Have fun!
+See tests for more example usage.
+Supported on Python 2.5 or higher, including Python 3.