# Funx: Reorganizing Eq and Ord

**URL:** <https://forum.devtalk.com/t/funx-reorganizing-eq-and-ord/228376>\
**Category:** Blogs/Articles/Talks/Podcasts\
**Tags:** funx, elixir, blog-post\
**Created:** [1 January 2026 18:16 UTC](https://forum.devtalk.com/t/funx-reorganizing-eq-and-ord/228376 "2026-01-01T18:16:54Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![JKWA](https://forum.devtalk.com/user_avatar/forum.devtalk.com/jkwa/32/7693_2.png) [@JKWA](https://forum.devtalk.com/u/JKWA)\
**Post date:** [1 January 2026 18:16 UTC](https://forum.devtalk.com/t/funx-reorganizing-eq-and-ord/228376/1 "2026-01-01T18:16:54Z")

</div>

> When designing Funx I leveraged protocols, which meant some concessions.
> 
> In Haskell, you can state class relationships like “every Monad is a Functor” (via superclass constraints). In Elixir, there isn’t an equivalent way to express that kind of protocol hierarchy. So instead of creating separate protocols and implying a relationship I can’t encode, I grouped the operations into a single protocol.

> **[Funx: Reorganizing Eq and Ord](https://www.joekoski.com/blog/2025/12/31/eq-ord-change.html)**
>
> When designing Funx I leveraged protocols, which meant some concessions.
