# Structured Clojure: Protocols and multimethods (oh my!)

DevFeed: [Structured Clojure: Protocols and multimethods (oh my!)](<https://devfeed.tech/articles/structured-clojure-protocols-and-multimethods-oh-my-32161.md>)

Original publisher: [Read original article](<https://adambard.com/blog/structured-clojure-protocols-and-multimethods/>)

Published: 2013-06-04T00:00:00Z

Content type: tutorial

Language: en

Sources: [Adam Bard](<https://devfeed.tech/sources/adam-bard.md>)

Topics: [Clojure](<https://devfeed.tech/topics/clojure.md>), [Code](<https://devfeed.tech/topics/code.md>), [interfaces](<https://devfeed.tech/topics/interfaces.md>)

Tags: [clojure](<https://devfeed.tech/tags/clojure.md>), [code](<https://devfeed.tech/tags/code.md>), [functional](<https://devfeed.tech/tags/functional.md>), [functions](<https://devfeed.tech/tags/functions.md>), [types](<https://devfeed.tech/tags/types.md>)

## AI overview

This tutorial explains how Clojure protocols and multimethods address the Expression Problem by making it easier to extend operations and data types. It contrasts multimethods with conditional implementations and compares protocols with Java-style interfaces.

## Source excerpt

You can use Clojure to do just about anything without ever needing to define anything but functions and vars, but you'd be missing out. Clojure supports some very nice ways to make your code more expressive - and more structured - when dealing with operations on data types.