Really Understand Functional Programming

107 views
Skip to first unread message

Max Shenfield

unread,
Feb 8, 2017, 10:21:01 PM2/8/17
to Penny University
I've been interested in functional programming for for a few years, I know a few basic concepts well, including persistent data structures and second order functions, and a functional language.

I want to set some mental boundaries for myself about what functional programming is and isn't, and understand its concepts in terms of tradeoffs instead of dogma or hype.

There are a lot of ideas listed in this document: http://lambdaconf.us/downloads/documents/lambdaconf_slfp.pdf. It had a rocky first incarnation, but it seems like a valuable catalog of ideas within functional programming.  Does anyone have any other resources, advice, or wisdom about the nature of functional programming? Or just an interest to get together and learn in a focused way with me?

Tanner Netterville

unread,
Feb 8, 2017, 10:55:37 PM2/8/17
to Penny University
I also have an interest in functional programming. At the behest of a former colleague I jumped into learning haskell. I used codewars.com programming challenges, the website Learn You a Haskell for Great Good!, and the hoogle search engine to get somewhat familiar with it and how to approach things in a strictly functional language. I'm far from an expert and most would hesitate to call me proficient in it, including myself, but I find it entertaining and my python has definitely become more organized and testable as a result.

Test driven code challenges make for good pair/small group programming sessions for a group of people interested in learning the thing. I would be down to spend an hour or so learning by doing if that interests anyone else here.

Dayne Wright

unread,
Feb 8, 2017, 11:16:38 PM2/8/17
to Penny University
Sign me up!!!!  I got hooked into functional programming at the last FP Meetup.  My experience so far has been with Clojure and going through the Clojure Koans.  There is a nice walk through that helps as you go along.

--
You received this message because you are subscribed to the Google Groups "Penny University" group.
To unsubscribe from this group and stop receiving emails from it, send an email to penny-university+unsubscribe@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/penny-university/adcd3e21-9348-4eef-8e89-ac8db30557a5%40googlegroups.com.

For more options, visit https://groups.google.com/d/optout.

Chad Upjohn

unread,
Feb 9, 2017, 8:01:14 AM2/9/17
to Penny University
Max

If you get together, I would love to listen in whether it's in person or on hangout.  I haven't dug into the topic so I'd be more interested in hearing what others say.


On Wednesday, February 8, 2017 at 9:21:01 PM UTC-6, Max Shenfield wrote:

rcarr

unread,
Feb 9, 2017, 10:02:12 AM2/9/17
to Penny University
I would be up for a hangout.


On Wednesday, February 8, 2017 at 9:21:01 PM UTC-6, Max Shenfield wrote:

Harrison Pickett

unread,
Feb 9, 2017, 10:33:12 AM2/9/17
to Penny University
https://medium.com/javascript-scene/master-the-javascript-interview-what-is-functional-programming-7f218c68b3a0#.1wgk0w7tw

That is probably the best non-hyped article I've read on FP ever.  There aren't many /pure/ functional languages out there (Haskell?). But lots of languages have functional features.  I grew up treating Python like a functional language, and even now avoid OO in Python. The big gotchas in Python's functional paradigm are side effects and mutability.

I'd love to do some kind of meetup or hangout about FP. Just tell me when and I'll try to make my schedule accommodate. :-)

On Wednesday, February 8, 2017 at 9:21:01 PM UTC-6, Max Shenfield wrote:

Max Shenfield

unread,
Feb 9, 2017, 9:45:04 PM2/9/17
to Penny University
That article had exactly what I was looking for.

Functional programming (often abbreviated FP) is the process of building software by composing pure functions, avoiding shared state, mutable data, and side-effects. Functional programming is declarative rather than imperative, and application state flows through pure functions. Contrast with object oriented programming, where application state is usually shared and colocated with methods in objects.
Functional programming is a programming paradigm, meaning that it is a way of thinking about software construction based on some fundamental, defining principles (listed above). Other examples of programming paradigms include object oriented programming and procedural programming.

Thanks (the rest of the article was also good).

I'd like to get together to work through an hour of exercises on Code Wars (or koans of choice) and ask questions.  I'm free Wednesday at 8 or 9 am next week? 

timc...@cicayda.com

unread,
Feb 9, 2017, 10:20:27 PM2/9/17
to Penny University
I'd love to dive deeper with FP as well.  I recently started working with Clojure, but am up for discussion or koans with any other language.  Wednesday at 8am works for me if we go the hangout route.

Dayne Wright

unread,
Feb 9, 2017, 11:46:03 PM2/9/17
to Penny University
Definitely want to join in if you get together on Wednesday either hangout or meetup.  Just let me know the details.  

On Thu, Feb 9, 2017 at 9:20 PM, <timc...@cicayda.com> wrote:
I'd love to dive deeper with FP as well.  I recently started working with Clojure, but am up for discussion or koans with any other language.  Wednesday at 8am works for me if we go the hangout route.

--
You received this message because you are subscribed to the Google Groups "Penny University" group.
To unsubscribe from this group and stop receiving emails from it, send an email to penny-university+unsubscribe@googlegroups.com.

Bradley Wogsland

unread,
Feb 10, 2017, 8:14:53 AM2/10/17
to Penny University
**shamelessly plugs functional programming talk he's giving next week**

https://www.meetup.com/nashville-php/events/237525601/

jason.orendorff

unread,
Feb 11, 2017, 12:10:15 PM2/11/17
to Penny University
On Wednesday, February 8, 2017 at 9:21:01 PM UTC-6, Max Shenfield wrote:
I've been interested in functional programming for for a few years, I know a few basic concepts well, including persistent data structures and second order functions, and a functional language.

Great start.

I'd be happy to join a lab on this -- after next week (little busy right now).

There are several great FP meetups in Nashville:

* The next NashFP is going to be lab-oriented. We'll be pairing up to write a relational database in a functional language! <http://cal.nashvl.org/events/3351>

* the Lisp meetup <https://www.meetup.com/Nashville-Lisp-Sync/events/237264650/>

* the Elixir meetup <https://www.meetup.com/nash-elixir/events/237007626/>

I want to set some mental boundaries for myself about what functional programming is and isn't, and understand its concepts in terms of tradeoffs instead of dogma or hype.

You and me both. If you find someone who writes cogently on this, let me know.

There are a lot of ideas listed in this document: http://lambdaconf.us/downloads/documents/lambdaconf_slfp.pdf. It had a rocky first incarnation, but it seems like a valuable catalog of ideas within functional programming.  Does anyone have any other resources, advice, or wisdom about the nature of functional programming? Or just an interest to get together and learn in a focused way with me?

Maybe one way to get the insights without the hype is to learn about systems that use aspects of FP.

For example, objects in a git repository are immutable. Why was it designed that way? What do we gain? And what are the tradeoffs? `git commit --amend`, for example, seems like it might be hard to implement since history is immutable. What else? What if objects were mutable: how would the design change? What problems would mutation create that you'd then have to solve?

I'd definitely be interested in knowing more, and I'd like to collect a list of systems that use immutability, composability, pure functions, and other FP concepts in surprising contexts.

-j

Max Shenfield

unread,
Feb 11, 2017, 6:34:40 PM2/11/17
to Penny University
I'm grateful for the thoughtful answer.

We've got a little coordination going on the Penny U Slack. ATM it looks like we're meeting on Wednesday, 9 A.M at Slow Hand, and via a google hangout.

I really like the idea of learning about a bit of systems build with functional programming ideas in mind.  Maybe we could meet again the week after, to explore that angle, with each person exploring a bit of a system built with FP principles? Redux might provide another example, define state as a function of an infinite sequence of actions.

Daniel Aquino

unread,
Feb 12, 2017, 7:49:40 AM2/12/17
to Penny University
I am also interested in increase my knowledge around FP.  I'm also interested in learning Clojure (read a book on it a few months ago and learn a little bit but got busy).  I mostly want to learn to gain new perspective.  I'd also be up for a hangout on Wednesday to listen in on the conversation.


On Wednesday, February 8, 2017 at 9:21:01 PM UTC-6, Max Shenfield wrote:

Max Shenfield

unread,
Feb 15, 2017, 11:14:47 AM2/15/17
to Penny University
Link to our discussion this morning - https://www.youtube.com/watch?v=3tAKZH9lyck

JnBrymn

unread,
Feb 17, 2017, 9:46:41 AM2/17/17
to Penny University
Any highlights from the discussion?

Chad Upjohn

unread,
Feb 17, 2017, 2:27:55 PM2/17/17
to Penny University
In my naive opinion, the ideal of a pure function is core to FP.  I am sure that someone like Wilkes Joiner will tell me that I am shortsighted.  The idea that you call a function and it doesn't have any side effects which you didn't know about or have to account for in your own code. 

It is in an early post in this discussion string.  I found value in that it gave the basis of FP and links to deeper explanation.

If there would be a second discussion on this, I would like to hear how people have leveraged the knowledge or ideals of FP in Python.

Lesson learned: don't do a recorded google hangout at Slow Hand.

On Friday, February 17, 2017 at 8:46:41 AM UTC-6, JnBrymn wrote:
Any highlights from the discussion?

Max Shenfield

unread,
Feb 19, 2017, 3:39:02 PM2/19/17
to Penny University
Tim shared his experience using Clojure full time at Cicayda.   We briefly discussed the the "boundaries" of functional programming outlined in the article Harrison shared.

At the end we dived into a CodeWars challenge using Clojure.  Also, John had observed how a Lisp syntax forced programmers to read from the inside out, which could be challenging.
Reply all
Reply to author
Forward
0 new messages