{"id":13993477,"url":"https://github.com/expede/teaching-fp","last_synced_at":"2025-08-25T07:06:48.117Z","repository":{"id":29301711,"uuid":"32834829","full_name":"expede/teaching-fp","owner":"expede","description":"Techniques, advice, and anecdotes about how to teach Functional Programming","archived":false,"fork":false,"pushed_at":"2016-11-05T17:01:35.000Z","size":88,"stargazers_count":57,"open_issues_count":2,"forks_count":4,"subscribers_count":7,"default_branch":"master","last_synced_at":"2025-03-29T14:05:37.832Z","etag":null,"topics":["clojure","clojurescript","elixir","elm","functional-programming","haskell","idris","material","ocaml","python","racket","rust","scala","scheme","teaching","theory"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/expede.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2015-03-25T01:15:15.000Z","updated_at":"2024-05-31T07:52:31.000Z","dependencies_parsed_at":"2022-08-22T06:10:34.159Z","dependency_job_id":null,"html_url":"https://github.com/expede/teaching-fp","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/expede%2Fteaching-fp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/expede%2Fteaching-fp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/expede%2Fteaching-fp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/expede%2Fteaching-fp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/expede","download_url":"https://codeload.github.com/expede/teaching-fp/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249834787,"owners_count":21331989,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["clojure","clojurescript","elixir","elm","functional-programming","haskell","idris","material","ocaml","python","racket","rust","scala","scheme","teaching","theory"],"created_at":"2024-08-09T14:02:23.793Z","updated_at":"2025-04-20T01:11:12.333Z","avatar_url":"https://github.com/expede.png","language":null,"funding_links":[],"categories":["Others"],"sub_categories":[],"readme":"# Teaching Functional Programming\nThese are currently my working notes on how to best teach FP\n\nI am by no means an expert in teaching this material! However, most current\nmaterials are \"okay\" _at best_. There seems to be an increase in people\ninterested in FP, but many get scared off at the word \"functor\" or unfamiliar\nsyntax (ie: not from the C-family).\n\n## Goal\n1. Don't scare off newcomers\n2. Help popularize FP by helping people teach effectively\n\n## Strategy\n- Keep it practical\n- Use a flexible language ([Racket](http://racket-lang.org)) so that you don't\nneed to switch syntax for different concepts\n- Progressive\n  - Start similar to the student's background (ex. compare to Java)\n- Less magic is *literally* demystifying\n  - Reimplement common patterns to show how things work\n    - `map`, `fold` (left and right), `scan` and `filter` from scratch\n  - Compare to imperative language strategy\n    - Loops vs recursion\n\n## Contributing\n1. Fork the repo\n2. Write your post\n3. Submit a pull request\n\n## Have Suggestions?\n[Submit an issue](https://github.com/expede/teaching-fp/issues/new)!\n\n## Emoji tags for commits, PRs and comments\n| Meaning                         | Symbol              | Markdown              |\n|---------------------------------|---------------------|----------------------:|\n| Idea                            | :bulb:              | `:bulb:`              |\n| Approval                        | :+1:                | `:+1:`                |\n| Improving code format/structure | :art:               | `:art:`               |\n| Writing docs                    | :memo:              | `:memo:`              |\n| Bug Fix                         | :bug:               | `:bug:`               |\n| Removing code or files          | :fire:              | `:fire:`              |\n| Fixing CI build                 | :green_heart:       | `:green_heart:`       |\n| Adding tests                    | :white_check_mark:  | `:white_check_mark:`  |\n| Upgrading dependencies          | :arrow_up:          | `:arrow_up:`          |\n| Downgrading dependencies        | :arrow_down:        | `:arrow_down:`        |\n| Fix linter warning or typo      | :shirt:             | `:shirt:`             |\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fexpede%2Fteaching-fp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fexpede%2Fteaching-fp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fexpede%2Fteaching-fp/lists"}