Podbean logo
  • Discover
  • Podcast Features
    • Podcast Hosting

      Start your podcast with all the features you need.

    • Podbean AI Podbean AI

      AI-Enhanced Audio Quality and Content Generation.

    • Blog to Podcast

      Repurpose your blog into an engaging podcast.

    • Video to Podcast

      Convert YouTube playlists to podcasts, videos to audios.

  • Monetization
    • Ads Marketplace

      Join Ads Marketplace to earn through podcast sponsorships.

    • PodAds

      Manage your ads with dynamic ad insertion capability.

    • Apple Podcasts Subscriptions Integration

      Monetize with Apple Podcasts Subscriptions via Podbean.

    • Live Streaming

      Earn rewards and recurring income from Fan Club membership.

  • Podbean App
    • Podcast Studio

      Easy-to-use audio recorder app.

    • Podcast App

      The best podcast player & podcast app.

  • Help and Support
    • Help Center

      Get the answers and support you need.

    • Podbean Academy

      Resources and guides to launch, grow, and monetize podcast.

    • Podbean Blog

      Stay updated with the latest podcasting tips and trends.

    • What’s New

      Check out our newest and recently released features!

    • Podcasting Smarter

      Podcast interviews, best practices, and helpful tips.

  • Popular Topics
    • How to Start a Podcast

      The step-by-step guide to start your own podcast.

    • How to Start a Live Podcast

      Create the best live podcast and engage your audience.

    • How to Monetize a Podcast

      Tips on making the decision to monetize your podcast.

    • How to Promote Your Podcast

      The best ways to get more eyes and ears on your podcast.

    • Podcast Advertising 101

      Everything you need to know about podcast advertising.

    • Mobile Podcast Recording Guide

      The ultimate guide to recording a podcast on your phone.

    • How to Use Group Recording

      Steps to set up and use group recording in the Podbean app.

  • All Arts Business Comedy Education
  • Fiction Government Health & Fitness History Kids & Family
  • Leisure Music News Religion & Spirituality Science
  • Society & Culture Sports Technology True Crime TV & Film
  • Live
  • How to Start a Podcast
  • How to Start a Live Podcast
  • How to Monetize a podcast
  • How to Promote Your Podcast
  • How to Use Group Recording
  • Log in
  • Start your podcast for free
  • Podcasting
    • Podcast Features
      • Podcast Hosting

        Start your podcast with all the features you need.

      • Podbean AI Podbean AI

        AI-Enhanced Audio Quality and Content Generation.

      • Blog to Podcast

        Repurpose your blog into an engaging podcast.

      • Video to Podcast

        Convert YouTube playlists to podcasts, videos to audios.

    • Monetization
      • Ads Marketplace

        Join Ads Marketplace to earn through podcast sponsorships.

      • PodAds

        Manage your ads with dynamic ad insertion capability.

      • Apple Podcasts Subscriptions Integration

        Monetize with Apple Podcasts Subscriptions via Podbean.

      • Live Streaming

        Earn rewards and recurring income from Fan Club membership.

    • Podbean App
      • Podcast Studio

        Easy-to-use audio recorder app.

      • Podcast App

        The best podcast player & podcast app.

  • Advertisers
  • Enterprise
  • Pricing
  • Resources
    • Help and Support
      • Help Center

        Get the answers and support you need.

      • Podbean Academy

        Resources and guides to launch, grow, and monetize podcast.

      • Podbean Blog

        Stay updated with the latest podcasting tips and trends.

      • What’s New

        Check out our newest and recently released features!

      • Podcasting Smarter

        Podcast interviews, best practices, and helpful tips.

    • Popular Topics
      • How to Start a Podcast

        The step-by-step guide to start your own podcast.

      • How to Start a Live Podcast

        Create the best live podcast and engage your audience.

      • How to Monetize a Podcast

        Tips on making the decision to monetize your podcast.

      • How to Promote Your Podcast

        The best ways to get more eyes and ears on your podcast.

      • Podcast Advertising 101

        Everything you need to know about podcast advertising.

      • Mobile Podcast Recording Guide

        The ultimate guide to recording a podcast on your phone.

      • How to Use Group Recording

        Steps to set up and use group recording in the Podbean app.

  • Discover
  • Log in
    Sign up free
Functional Design in Clojure

Functional Design in Clojure

Technology:Software How-To

Ep 098: Composed Learnings

Ep 098: Composed Learnings

2023-11-09
Download Right click and do "save link as"

Each week, we discuss a different topic about Clojure and functional programming.

If you have a question or topic you'd like us to discuss, tweet @clojuredesign, send an email to feedback@clojuredesign.club, or join the #clojuredesign-podcast channel on the Clojurians Slack.

This week, the topic is: "composition is life". We reflect on keeping the necessary mess at the edges so our core can be composed together with beauty and simplicity.

Our discussion includes:

  • Our reflections on the episodes in this series.
  • The best concepts from the episodes in this series.
  • How to separate data from behavior.
  • Why zucchini bread is at the core of functional programming.
  • What baking has to do with functional programming.
  • How to get objectivity for better understanding.
  • Why you should focus on trade offs.
  • How Clojure and immutability steer you toward composition.
  • An inventory of different kinds of functions.
  • Why side effects ruin composition.
  • How Clojure lets you focus on your problem.
  • How composition works in the small and the large.
  • The paradox of constraints providing more freedom.
  • The cognitive load of functional programming vs object-oriented programming.

Selected quotes:

  • "This episode we thought we would take it and put it all together." "The last draft."
  • "Functional programming is built on composition."
  • "Object-oriented programming tends to have at least a little bit of behavior and data together, so you can't separate them if you want to make a new thing."
  • "If you just want classes to be one thing, just data or just methods, all of a sudden you end up with something that looks a lot like functional programming."
  • "Constraints breed freedom and clarity. If you can't reach other functionality through data, then data will never hurt you."
  • "It takes a while to discover what is worth separating and what's fine to leave in larger chunks." "You have to use it."
  • "So by moving [a problem] into a separate domain, you're able to see the essentials, the fundamentals, more clearly because you're not stuck in those ruts of thinking that you do without realizing."
  • "I've been known to eat the same thing for breakfast every day, for weeks on end."
  • "Clojure core plus immutability really steers you in the direction of composition."
  • "'Transforms' is a little unfair of a category because that's almost all of functional programming."
  • "Data cake. Delicious!"
  • "I want to do something with this data that affects the world around me besides generating heat."
  • "Side effects ruin composition because side effects are a second dimension that is difficult to compose."
  • "When you write functions in the way that Clojure expects them, this whole world of core opens up, and the only thing you had to implement was your the code that was relevant to your domain."
  • "There's almost nothing to Clojure itself. Most of my time writing in Clojure is thinking about my problem--not thinking about how I'm going to express it or how I'm going to model the object graph or any of that stuff."
  • "I'm just left thinking about my own problem."
  • "The key in all composition is a clear delineation and separation of responsibilities."
  • "Because they're smaller, you can understand them at a glance."
  • "With side effects, there's an infinite number of additional dimensions that are possible. You can't just worry about what the function says it does, you have to worry about all the other things that it could be doing!"
  • "Side effects are like really advanced politics between hostile countries. There are the words that come out of their mouth, and then there's all the stuff that really matters that no one's talking about!"
  • "Clojure is for the peaceful."
  • "If you like to keep all the messiness at the edges so the core of your application can be composed together with beauty and simplicity, making your day wonderful, then Clojure might be for you!"

Common kinds of functions:

  • Predicates: provide truth values
  • Reducers: take the current "state" and an input and return a new state
  • Transforms: broad category that covers many kinds of functions
  • Conversions: take one kind of thing and turn it into another kind of thing eg. parse-long
  • Extractors: return part of a data object
  • Mergers: combine data together
  • Decorators/enrichers: takes a data shape and adds more into it while preserving the original data shape
  • Side effectors: affects the world in a clear and specific way

Links:

  • Ep 093: Waffle Cakes
  • Ep 094: Concrete Composition
  • Ep 095: Composing Core
  • Ep 096: Gaming Data
  • Ep 097: Application of Composition
view more

More Episodes

Ep 118: Pure Parts
2024-06-27
Ep 117: Pure Understanding
2024-05-23
Ep 116: The Main Focus
2024-05-16
Ep 115: The Main Event
2024-05-09
Ep 114: Brand New, Again
2024-05-02
Ep 113: Highlightify!
2024-02-29
Ep 112: Purify!
2024-02-22
Ep 111: Loopify!
2024-02-15
Ep 110: Contextify!
2024-02-08
Ep 109: Extractify!
2024-02-01
Ep 108: Testify!
2024-01-25
Ep 107: Idempotify!
2024-01-18
Ep 106: Robustify!
2024-01-11
Ep 105: Codify!
2024-01-04
Ep 104: Assembleify!
2023-12-21
Ep 103: Explorify!
2023-12-14
Ep 102: REPLify!
2023-12-07
Ep 101: Sportify!
2023-11-30
Ep 100: Thanks Overflow
2023-11-23
Ep 099: REPL Your World
2023-11-16
  • ←
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • →
012345678910111213141516171819

Get this podcast on your
phone, FREE

Download Podbean app on App Store Download Podbean app on Google Play

Create your
podcast in
minutes

  • Full-featured podcast site
  • Unlimited storage and bandwidth
  • Comprehensive podcast stats
  • Distribute to Apple Podcasts, Spotify, and more
  • Make money with your podcast
Get started

It is Free

  • Podcast Services

    • Podcast Features
    • Pricing
    • Enterprise Solution
    • Private Podcast
    • The Podcast App
    • Live Stream
    • Audio Recorder
    • Remote Recording
    • Podbean AI
  •  
    • Create a Podcast
    • Video Podcast
    • Start Podcasting
    • Start Radio Talk Show
    • Education Podcast
    • Church Podcast
    • Nonprofit Podcast
    • Get Sermons Online
    • Free Audiobooks
  • MONETIZATION & MORE

    • Podcast Advertising
    • Dynamic Ads Insertion
    • Apple Podcasts Subscriptions
    • Switch to Podbean
    • YouTube to Podcast
    • Blog to Podcast
    • Submit Your Podcast
    • Podbean Plugins
    • Developers
  • KNOWLEDGE BASE

    • How to Start a Podcast
    • How to Start a Live Podcast
    • How to Monetize a Podcast
    • How to Promote Your Podcast
    • Mobile Podcast Recording Guide
    • How to Use Group Recording
    • Podcast Advertising 101
  • Support

    • Support Center
    • What’s New
    • Free Webinars
    • Podcast Events
    • Podbean Academy
    • Podbean Amplified Podcast
    • Badges
    • Resources
  • Podbean

    • About Us
    • Podbean Blog
    • Careers
    • Press and Media
    • Green Initiative
    • Affiliate Program
    • Contact Us
  • Privacy Policy
  • Cookie Policy
  • Terms of Use
  • Consent Preferences
  • Copyright © 2015-2025 Podbean.com