Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Multiple dispatch
(section)
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
== Support in programming languages == === Primary paradigm === * [[Julia (programming language)|Julia]]<ref name="juliaManual">{{cite web |url=http://docs.julialang.org/en/release-0.4/manual/methods/ |title=Methods |publisher=Julialang |work=The Julia Manual |access-date=11 May 2014 |archive-url=https://web.archive.org/web/20160717192005/http://docs.julialang.org/en/release-0.4/manual/methods/ |archive-date=17 July 2016 |url-status=dead }}</ref> === Supporting general multimethods === * [[C Sharp 4.0|C# 4.0]]<ref>{{cite web |url=http://blogs.msdn.com/laurionb/archive/2009/08/13/multimethods-in-c-4-0-with-dynamic.aspx |title=Multimethods in C# 4.0 With 'Dynamic' |access-date=2009-08-20 }}</ref> * [[Cecil (programming language)|Cecil]]<ref>{{cite web |url=http://www.cs.washington.edu/research/projects/cecil/www/cecil.html |title=Cecil Language |access-date=2008-04-13 }}</ref> * [[Clojure]]<ref>{{cite web |url=http://clojure.org/multimethods |title=Multimethods in Clojure |access-date=2008-09-04 }}</ref> * [[Common Lisp]] (via the [[Common Lisp Object System]])<ref>{{cite book |last=Steele |first=Guy L. |title=Common LISP: The Language |publisher=Digital Press |location=Bedford, MA, U.S.A |year=1990 |chapter=28 |isbn=978-1-55558-041-4 |chapter-url=https://books.google.com/books?id=8Hr3ljbCtoAC }}</ref> * [[Dylan (programming language)|Dylan]]<ref>{{cite web |url=http://www.opendylan.org/books/drm/Background_and_Goals |title=Background and Goals |access-date=2008-04-13 }}</ref> * [[Emacs Lisp]] (via [https://www.gnu.org/software/emacs/manual/html_node/elisp/Generic-Functions.html cl-defmethod]) * [[Fortress (programming language)|Fortress]]<ref>{{cite web |url=http://research.sun.com/projects/plrg/Publications/fortress.1.0.pdf |title=The Fortress Language Specification, Version 1.0 |access-date=2010-04-23 |archive-url=https://web.archive.org/web/20130120063452/http://research.sun.com/projects/plrg/Publications/fortress.1.0.pdf |archive-date=2013-01-20 |url-status=dead }}</ref> * [[Groovy (programming language)|Groovy]]<ref>{{cite web |url=http://blogs.oracle.com/sundararajan/entry/multimethods_in_groovy |title=Multimethods in Groovy |access-date=2008-04-13 }}</ref> * [[Lasso (programming language)|Lasso]]<ref>{{cite web |url=http://lassoguide.com/language/methods.html#multiple-dispatch |title=Methods β LassoGuide 9.2 |access-date=2014-11-11 }}</ref><ref>{{cite web |url=http://nice.sourceforge.net/visitor.html |title=Visitor Pattern Versus Multimethods |access-date=2008-04-13 }}</ref> * [[Nim (programming language)|Nim]], up to v0.19.x (from v0.20.0 it is necessary to pass a compiler flag)<ref>{{cite web |url=https://nim-lang.org/docs/manual.html#methods-multiminusmethods |title=Nim Manual: Multi-methods |access-date=2022-05-03 }}</ref> * [[Raku (programming language)|Raku]]<ref>{{cite web |url=http://dev.perl.org/perl6/faq.html |title=Perl 6 FAQ |access-date=2008-04-13 }}</ref> * [[R (programming language)|R]]<ref>{{cite web |url=http://developer.r-project.org/howMethodsWork.pdf |title=How S4 Methods Work |access-date=2008-04-13 }}</ref> * [[Seed7]]<ref>{{cite web |url=http://seed7.sourceforge.net/manual/objects.htm#multiple_dispatch |title=Multiple Dispatch in Seed7 |access-date=2011-04-23 }}</ref> * [[TADS]]<ref>{{cite web |url=http://tads.org/t3doc/doc/sysman/multmeth.htm |title=TADS 3 System Manual |access-date=2012-03-19 }}</ref> * [[Visual Basic (.NET)]] (VB.NET)<ref>{{cite web |url=https://www.infoq.com/news/2007/06/VB-Multiple-Dispatch/ |title=VB.Net Multiple Dispatch |access-date=2020-03-31 }}</ref> via late binding, also via [[.Net DLR]]<ref>{{cite web |url=https://www.red-gate.com/simple-talk/dotnet/visual-studio/the-new-features-in-c4-0/ |title=New Features in C#4.0 and VB.Net 10.0 |date=4 November 2010 |access-date=2020-03-31 }}</ref> * [[Wolfram Language]]<ref>{{cite web |url=https://www.wolfram.com/language/for-experts/ |title=Notes for Programming Language Experts |access-date=2016-08-21 }} </ref> via symbolic pattern matching * [http://www.eclipse.org/xtend Xtend]<ref>{{cite web |url=https://www.eclipse.org/xtend/documentation/202_xtend_classes_members.html#polymorphic-dispatch |title=Multiple dispatch }}</ref> === Via extensions === * Any [[.NET]] framework language (via the library [http://www.codeplex.com/multimethods MultiMethods.NET]) * [[C (programming language)|C]] (via the library [https://github.com/CObjectSystem/COS C Object System]) * [[C Sharp (programming language)|C#]] (via the library [https://code.google.com/p/multimethod-sharp/ multimethod-sharp]) * [[C++]] (via the library [https://github.com/jll63/yomm2 yomm2], [https://github.com/IgorNikitin/multimethods multimethods] and [https://github.com/Hectarea1996/omm omm]) * [[D (programming language)|D]] (via the library [https://github.com/jll63/methods.d openmethods]) * [[Factor (programming language)|Factor]] (via the standard [http://docs.factorcode.org/content/vocab-multi-methods.html multimethods vocabulary]) * [[Java (programming language)|Java]] (using the extension [http://multijava.sourceforge.net/ MultiJava]) * [[JavaScript]] (via package [https://www.npmjs.com/package/@arrows/multimethod @arrows/multimethod]) * [[Perl]] (via the module [https://metacpan.org/module/Class::Multimethods Class::Multimethods]) * [[Python (programming language)|Python]] (via [https://pypi.python.org/pypi/PEAK-Rules PEAK-Rules], [https://web.archive.org/web/20050409082546/http://peak.telecommunity.com/ RuleDispatch], [https://web.archive.org/web/20050309230813/http://gnosis.cx/download/gnosis/magic/multimethods.py gnosis.magic.multimethods], [http://sourceforge.net/projects/pymultimethods/ PyMultimethods], [https://multiple-dispatch.readthedocs.org/en/latest/ multipledispatch], or [https://github.com/beartype/plum plum-dispatch]) * [[Racket (programming language)|Racket]] (via [https://docs.racket-lang.org/multimethod/index.html multimethod-lib]) * [[Ruby (programming language)|Ruby]] (via the library [https://rubygems.org/gems/multi/ The Multiple Dispatch Library] and [https://rubygems.org/gems/multimethod Multimethod Package] and [https://rubygems.org/gems/vlx-multi/ Vlx-Multimethods Package]) * [[Scheme (programming language)|Scheme]] (via e.g. [http://community.schemewiki.org/?tiny-clos TinyCLOS]) * [[TypeScript]] (via package [https://www.npmjs.com/package/@arrows/multimethod @arrows/multimethod])
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)