JSOS compared to other languages and libraries JS+JSOS versus other languages JSOS versus other JS libraries See also

JSOS compared to other languages and libraries

What features does JSOS have compared to other multimethod offerings out there?

JS+JSOS versus other languages

Feature JSOS CLOS Clojure Julia
Multiple dispatch ✔ ✔ ✔ ✔
Custom dispatch function ✔ ✘ ✔ ✘
Qualifiers (around, ...) ✔ ✔ ✘ ✘
Call-next-method ✔ ✔ ✘ ✘
Method combinators ✔ ✔ ✘ ✘
Prefer-method ✔ ✘ ✔ ✘
Dispatch on types ✔ ✘ ✘ ✔
Dispatch on classes ✔ ✔ N/A N/A
Dispatch on values ✔ only eql ✘ ✘
Dispatch on predicates ✔ ✘ ✘ ✘
Dispatch on traits ✔ N/A N/A N/A
Dispatch on keywords N/A ✘ ✔ N/A
Custom hierarchies ✘ ✘ ✔ ✘
11/13 5/13 5/13 2/13

JSOS versus other JS libraries

JSOS arrows mm.js1 multimethod.js
Last commit 2025 2021 never 2014
Dependencies none 4 none 1
License MIT-0 ISC ? MIT
Language flavor ES 2020 TypeScript ES 5 ES 5
---
Uses ES6 modules? ✔ ✔2 ✘ ✘
Multiple dispatch ✔ ✔ ✔ ✘4
Custom dispatch function ✔ ✔ ✘ ✔
Qualifiers (around, ...) ✔ ✘ ✔ ✘
Call-next-method ✔ ✘ ✔ ✘
Method combinators ✔ ✘ ✘ ✘
Prefer-method ✔ ✘ ✘ ✔
Dispatch on types ✔ ✔ ✔ ✘
Dispatch on classes ✔ ✔ ✔ N/A
Dispatch on values ✔ ✔ ✘ ✘
Dispatch on predicates ✔ ✔ ✘ ✘
Dispatch on traits ✔ N/A N/A N/A
Has a type system ✔ ✘ ✔3 ✘
'Any' / placeholder arg ✔ ✔ ✘ ✘
13/13 8/13 5/13 3/13

See also


  1. mm.js doesn't have a repository or issue tracker, it's just a single-file library released in a blog post dating back to 2014 ↩

  2. arrows/multimethod is written in TypeScript, so it can be exported to ES6 modules as well ↩

  3. mm.js has "classes" (not ES6 classes) and integrates JS types as classes. So you could say it has a type system, but a very basic one ↩

  4. multimethod.js only dispatches on one argument, so it's rather limited ↩