Skip to content

Techniques, advice, and anecdotes about how to teach Functional Programming

License

Notifications You must be signed in to change notification settings

expede/teaching-fp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Teaching Functional Programming

These are currently my working notes on how to best teach FP

I am by no means an expert in teaching this material! However, most current materials are "okay" at best. There seems to be an increase in people interested in FP, but many get scared off at the word "functor" or unfamiliar syntax (ie: not from the C-family).

Goal

  1. Don't scare off newcomers
  2. Help popularize FP by helping people teach effectively

Strategy

  • Keep it practical
  • Use a flexible language (Racket) so that you don't need to switch syntax for different concepts
  • Progressive
    • Start similar to the student's background (ex. compare to Java)
  • Less magic is literally demystifying
    • Reimplement common patterns to show how things work
      • map, fold (left and right), scan and filter from scratch
    • Compare to imperative language strategy
      • Loops vs recursion

Contributing

  1. Fork the repo
  2. Write your post
  3. Submit a pull request

Have Suggestions?

Submit an issue!

Emoji tags for commits, PRs and comments

Meaning Symbol Markdown
Idea 💡 :bulb:
Approval 👍 :+1:
Improving code format/structure 🎨 :art:
Writing docs 📝 :memo:
Bug Fix 🐛 :bug:
Removing code or files 🔥 :fire:
Fixing CI build 💚 :green_heart:
Adding tests :white_check_mark:
Upgrading dependencies ⬆️ :arrow_up:
Downgrading dependencies ⬇️ :arrow_down:
Fix linter warning or typo 👕 :shirt: