Functional Design in Clojure

Functional Design in Clojure

By Christoph Neumann and Nate JonesTechnology
Download on the App Store

Functional Design in Clojure episodes

  • Ep 089: Branching Out

    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 [email protected], or join the #clojuredesign-podcast channel on the Clojurians Slack.

    This week, the topic is: "if, when, case, condp, and cond." We wander through the myriad ways of making decisions and listing choices in Clojure.

    Selected quotes:

    • "Clojure is all about the practical."
    • "Never be afraid of the in-line if."
    • "We need to conserve parentheses, for future generations of lispers."
    • "Build up the language to the vocabulary of your domain, and you won't have to think about the language any more, you'll just be thinking about your problem."
    • "Where are you in programming, without branching?"
    • Links:

      • if
      • when
      • case
      • cond
      • condp
      • Related Episodes:

        • 086: Let Tricks
        • 087: Polymorphic Metal
        • 39 min
        • Ep 088: Do Dorun Run!

          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 [email protected], or join the #clojuredesign-podcast channel on the Clojurians Slack.

          This week, the topic is: "doall, dorun, doseq, and run!." We eagerly discuss the times we need to interact with the messy world from our nice clean language.

          Selected quotes:

          • "We're going to talk about not being lazy, for once."
          • "Laziness is a virtue."
          • "Clojure loves immutability. The world loves mutability."
          • Links:

            • doall
            • dorun
            • doseq
            • run!
            • Larry Wall's Three Virtues
            • Related Episodes:

              • 014: Fiddle with the REPL
              • 085: For for the When
              • 086: Let Tricks
              • 27 min
              • Ep 087: Polymorphic Metal

                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 [email protected], or join the #clojuredesign-podcast channel on the Clojurians Slack.

                This week, the topic is: "multimethods." We discuss polymorphism and how we tackle dynamic data with families of functions.

                Selected quotes:

                • "You don't have to reach for polymorphism as quickly in Clojure."
                • "Polymorphism at its simplest."
                • "A natural fit for processing a list of heterogeneous things."
                • "Our natural tool of computation: the function."
                • Links:

                  • defmulti
                  • defmethod
                  • Multimethods and Hierarchies
                  • defmethod in Pyrite font
                  • 30 min
                  • Ep 086: Let Tricks

                    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 [email protected], or join the #clojuredesign-podcast channel on the Clojurians Slack.

                    This week, the topic is: "let." Let us share some tricks to reduce nesting and make your code easier to understand.

                    Selected quotes:

                    • "It's really about avoiding nesting."
                    • "Functions grow as a function of their nesting."
                    • "I don't want to start doing math on a nil!"
                    • "It's a clue that the value might not be there."
                    • "It's like your prep space in the kitchen."
                    • Links:

                      • let
                      • 33 min
                      • Ep 085: For for the When

                        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 [email protected], or join the #clojuredesign-podcast channel on the Clojurians Slack.

                        This week, the topic is: "for." We talk about this data generating macro, while we remember situations when it was useful.

                        Selected quotes:

                        • "You are generating a new sequence in a declarative way."
                        • "In typical Clojure fashion, I looked up the definition."
                        • "Forgive us for our puns."
                        • "Where the while is in the for. Another statement that doesn't make sense to the outside listener."
                        • Links:

                          • for
                          • 30 min
                          • Ep 084: All Sorts

                            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 [email protected], or join the #clojuredesign-podcast channel on the Clojurians Slack.

                            This week, the topic is: "sort and sort-by." We lay out a list of ways to sort your data, ordered by their relative power.

                            Selected quotes:

                            • "Clojure core is a shared vocabulary that we all can use."
                            • "I can't sort things in my mind, I'll just have the computer do it for me."
                            • "There only needs to be one sort-by function, because of the flexibility of passing in the classifying function."
                            • "We don't need any framework-y mumbo-jumbo."
                            • "We do interop, but only at the edges."
                            • Links:

                              • sort
                              • sort-by
                              • 28 min
                              • Ep 083: Sift Sans Sort

                                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 [email protected], or join the #clojuredesign-podcast channel on the Clojurians Slack.

                                This week, the topic is: "partition-by and group-by." We get a handle on big buckets of data by sifting elements into smaller buckets.

                                Selected quotes:

                                • "If you know the core toolbox better, you will use it more effectively."
                                  • "Is there a group-by hiding in this code that uses filter?"
                                  • "Be eager to be lazy."
                                  • Links:

                                    • partition-by
                                    • group-by
                                    • 25 min
                                    • Ep 082: Filter and Friends

                                      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 [email protected], or join the #clojuredesign-podcast channel on the Clojurians Slack.

                                      This week, the topic is: "filter, filterv, remove, keep, and keep-indexed." We talk about sifting data and marvel at the simple function that can turn two steps into one.

                                      Selected quotes:

                                      • "It's not just linguistic, it helps it make more sense."
                                      • "We should be more positive about our intent."
                                      • "Clojure's sense of falsey is thankfully limited to nil and false."
                                      • "Nil is a positive statement that it didn't work out."
                                      • "Keep is great for those times where you need data for both the transform and the filter."
                                      • "It's only a complement away!"
                                      • "Reaching for optimization too early leads to more complexity."
                                      • Links:

                                        • filter
                                        • filterv
                                        • remove
                                        • keep
                                        • keep-indexed
                                        • 28 min
                                        • Ep 081: List No More

                                          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 [email protected], or join the #clojuredesign-podcast channel on the Clojurians Slack.

                                          This week, the topic is: "first, second, key, and val." We talk about positive nothing and the proliferation of tuples.

                                          Selected quotes:

                                          • "Let our ramblings help your code ramblings."
                                          • "First is the key."
                                          • "Nil, the positive statement of nothing."
                                          • "Key and val are a hint that the bit of data you're working on is really a small part of a map."
                                          • Links:

                                            • first
                                            • second
                                            • key
                                            • val
                                            • 27 min
                                            • Ep 080: Apply as Needed

                                              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 [email protected], or join the #clojuredesign-podcast channel on the Clojurians Slack.

                                              This week, the topic is: "apply." We take time to unroll some examples of this function.

                                              Selected quotes:

                                              • "If you go and read the code in core, which I would encourage."
                                              • "And all the rest..."
                                              • "Why is there no third function?"
                                              • "If you're using reduce, you may be missing an opportunity to use apply."
                                              • Links:

                                                • apply
                                                • 23 min

                                                About Functional Design in Clojure

                                                From the publisher's feed

                                                Each week, we discuss a software design problem and how we might solve it using functional principles and the Clojure programming language.