Portland Functional Programming Study Group

pdxfunc is a study/user group exploring the world of functional programming, based in Portland, Oregon. The group welcomes programmers interested in all functional languages, including Haskell, Lisp, OCaml, and others. The group has been meeting regularly since November 2007 for presentations, demos and discussions applicable to all skill levels, from newbies and experts. Every month 15-35 people come together to share their knowledge, projects and enthusiasm for functional programming – join us!


There are many ways to participate in pdxfunc:

  • Join our Meetup group, where you can RSVP for events
  • Attend our meetings, they are usually on the second Monday of the month. If you have presentations, discussion topics or activities you would like to see, please post them to the mailing list or mention them at the beginning of meetings.
  • Subscribe to our online mailing list to receive meeting announcements and notes, get suggestions of interesting events, and participate in technical discussions. You may post jobs and gigs for FP-related work within ~100 miles of Portland.
  • Follow us on Twitter for meeting announcements and notes.
  • Join us on Freenode IRC: #pdxfunc
  • Join us on ePDX to tell the world that you're part of this user group and find others.

Other local groups

This month's meeting, 9/11/17

  • Part 1: Haskell Lesson 8 by Lyle, IO, based on Brent Yorgey's CIS 194
  • Part 2: Lyle will present his BASIC interpreter written in Haskell, Vintage BASIC.

Meetup Event

Calagator Event

Notes from past meetings

Every pdxfunc meeting is full of awesome, but we often forget to take notes, so this is just a fraction of what we talk about in person. The most recent content is at the top:

  • August 2017: Echo led Haskell Lesson 7 on folds and monoids; Jamon Holmgren presented his implementation of the A* pathfinding algorithm in Elm (GitHub repo) (live demo)
  • July 2017: Leif presented Haskell Lesson 6; Rob Norris spoke about free monoids and monads
  • June 2017: Lyle reviewed Homework 4 and delivered Haskell Lesson 5; Matt Rice spoke about implementing mock crypto primitives using the type system of the 1ML language (annotated source)
  • May 2017: Lyle Kopnicky went over Homework 3 and Haskell Lesson 4; Michael Beidler presented about Isomorphic Web Apps in Haskell using GHCJS, React & Flux (slides)
  • April 2017: Echo taught Haskell Lesson 3; Lyle presented an introduction to Category Theory (slides)
  • March 2017: Echo taught Haskell Lesson 2
  • In February 2017, we started a new format where the first half is a lecture from Brent Yorgey's CIS 194, and the second half is an advanced talk. For February, Lyle gave the Haskell lesson and Leif spoke about data parallelism in Spark (Scala) and Haskell.
  • Notes and video from Lyle Kopnicky's talk “SKI School: The Combinator Calculus Demystified”
  • Video and notes for “Haskell Records” by Nathan Collins; and “Designing a JSON Validator DSL” by Lyle Kopnicky.
  • Notes for “Actors with Oz” by Lyle Kopnicky; Haskell legacy code, testing, code coverage, static analysis, and pronunciation; Kotlin.
  • Notes for “Introduction to Oz”, a multi-paradigm programming language that incorporates many functional features by Lyle Kopnicky.
  • Notes for “Glome Ray Tracer” by Jim Snow; and Node.js and CoffeeScript by Merlyn Albery-Speyer.
  • Site for Vintage BASIC, a Haskell-based interpreter for the BASIC programming language by Lyle Kopnicky.
  • Notes for code spelunking with Yesod, QuasiQuote, Parsec and Template Haskell by Igal Koshevoy.
  • Notes for an “Overview of the Yesod web framework for Haskell” by Igal Koshevoy.
  • Notes for a “Yesod clone of git-http-backend” by Jamey Sharp and Josh Triplett.
  • Notes for “FRP, Functional Reactive Programming” by Jake Brownson.
  • Notes for “Curry: a Functional Language with Non-determinism” by Sergio Antoy and “KiCS2: A New Compiler from Curry to Haskell”]] by Michael Hanus.
  • Notes for Agda theorem prover by Julian Blake Kongslie; Serialist.net - lazy web-crawling in Haskell, FP webapps, early-finish monad, HTTP Digest, etc. by Jamey Sharp and Josh Triplett.
  • Notes for Data.Binary by Don Stewart; Data.Serialize by Trevor Elliot; Linux kernel modules in Haskell by Thomas DuBuisson; command-line argument parsing by Bart Massey; random, Control.Monad.Random by Julian Blake Kongslie; System.Random.Mersenne and Mersenne.Random.Pure64 by Don Stewart; and Motivik - music signal processing by Jeremy Voorhis.
  • Notes for “Designing, visualizing and benchmarking data structures in Haskell” by Don Stewart.
  • Notes for FRP - Functional Reactive Programming, Fran, Yampa, Arrows, and Monads vs. Arrows by Julian Blake Kongslie; Haskell $ operator, Type Classes and unit conversion in Haskell by Jesse Hallett.
  • Notes for Clojure and Cascade by Howard Lewis Ship.
  • Notes for “Handbook of Practical Logic and Automated Reasoning” by John Harrison.
  • Notes for “Beautiful Parallelism: Harnessing Multicores with Haskell” by Don Stewart.
  • Notes for “Trace-Based Just-In-Time Compilation For Highly-Dynamic Languages” by Jim Blandy.
  • Notes for thimk, a command-line Haskell spellchecker by Bart Massey; OCaml Batteries Included; Haskell Platform.
  • Notes for “The Haskell Cheatsheet” by Justin Bailey.
  • Notes for Computer Language Benchmarks Game on approaches to speeding up code using hints, cleverness, algorithms, multiple cores, etc.
  • Notes for “Why OOP is inherently a pile of fail” by Bart Massey, and “CHORTL - Combinator Haskell Operators for RTL” by Julian Kongslie Blake.
  • Notes for “Designing, visualizing and benchmarking data structures in Haskell” by Don Stewart
  • Notes for first meeting ever: philosophy, call for participation, resources, etc.