Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 29 additions & 0 deletions .github/workflows/links.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
name: Check links

on:
pull_request:
push:
schedule:
- cron: "0 6 * * 1"
workflow_dispatch:

jobs:
lychee:
name: Links in Markdown files
runs-on: ubuntu-latest

steps:
- name: Check out repository
uses: actions/checkout@v5

- name: Check links in Markdown files
uses: lycheeverse/lychee-action@v2
with:
fail: true
args: >-
--verbose
--no-progress
--timeout 20
--retry-wait-time 5
--max-retries 2
'./**/*.md'
3 changes: 1 addition & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
[![License: CC BY-SA 4.0](https://img.shields.io/badge/License-CC%20BY--SA%204.0-lightgrey.svg)](https://creativecommons.org/licenses/by-sa/4.0/)
[![DOI](https://zenodo.org/badge/118425348.svg)](https://zenodo.org/badge/latestdoi/118425348)

Materials of [MI-AFP] (*Applied Functional Programming*) course tutorials
Materials of MI-AFP (*Applied Functional Programming*) course tutorials

## Content

Expand All @@ -29,7 +29,6 @@ This project is licensed under the Creative Commons Public License [CC BY-SA 4.0
[issue]: https://help.github.com/articles/about-issues/
[pull request]: https://help.github.com/articles/about-pull-requests/
[CC BY-SA 4.0]: https://creativecommons.org/licenses/by-sa/4.0/deed.cs
[MI-AFP]: http://bk.fit.cvut.cz/en/predmety/00/00/00/00/00/00/05/42/92/p5429206.html
[MI-AFP organization]: https://github.com/MI-AFP
[MI-PYT]: https://github.com/cvut/MI-PYT
[LICENSE]: LICENSE
4 changes: 1 addition & 3 deletions project-guide.md
Original file line number Diff line number Diff line change
Expand Up @@ -63,8 +63,6 @@ Important part of a productive environment (and not just for team, even if you a

The most famous version control systems these days are [Git](https://git-scm.com) and [SVN (subversion)](https://subversion.apache.org). Frequently, you can stick with rule that SVN is more suitable for larger and binary files (although there is Git LFS) or when good integration for specific tool is supplied (for example, Enterprise Architect). The core difference is in approach that SVN is centralized and you need to lock part that you want to change, this is where Git will require you resolve merge conflicts. Merging and branches in SVN are more complicated than in Git (this many be subjective).

![Git vs. Subversion (git-tower.com)](https://www.git-tower.com/learn/content/01-git/01-ebook/en/02-desktop-gui/07-appendix/02-from-subversion-to-git/centralized-vs-distributed.png)

For more see: https://www.perforce.com/blog/vcs/git-vs-svn-what-difference

### GitHub, GitLab, and others
Expand Down Expand Up @@ -142,7 +140,7 @@ To avoid that, you need some people to do reviews for you and do the review for

As already being said few times, there are services that can be easily integrated with GitHub or GitLab in order to do something with your project automatically when you push commits, create pull request, release new version, or do some other action. The "something" can be actually anything and you can write such "[CI tool](https://en.wikipedia.org/wiki/Continuous_integration)" even by yourself.

* Continuous Integration - This term is used usually when your software is built (all parts are integrated), and tested with automatic tests or at least attempt to execute it is done. The result is that at that moment your code is (at least somehow) working. It is nice to see in your commits history which were working and which were not. For this, you can use [Travis CI](travis-ci.org), [Semaphore CI](https://semaphoreci.com), AppVeyor, and many others.
* Continuous Integration - This term is used usually when your software is built (all parts are integrated), and tested with automatic tests or at least attempt to execute it is done. The result is that at that moment your code is (at least somehow) working. It is nice to see in your commits history which were working and which were not. For this, you can use [Travis CI](https://travis-ci.org), [Semaphore CI](https://semaphoreci.com), AppVeyor, and many others.
* Continuous Inspection - Services that does static inspection of your code, they can verify dependencies of your project, evaluate coverage, and others. One of the examples is [SonarQube](https://www.sonarqube.org), but again there are many similar services.
* Continuous Delivery - If your code passed the build and test phases, it can be deployed somewhere. The deployment can have many realizations, from actual deployment on some web hosting or app server (realized, for example, by service like [Heroku](https://www.heroku.com) or [AWS](https://aws.amazon.com)), though publishing new documentation on [ReadTheDocs](https://readthedocs.org), to uploading installation packages to some registry. All depends what you need, want, and how you will set it up.

Expand Down
174 changes: 44 additions & 130 deletions references.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,133 +2,89 @@

## Rationale

* https://dzone.com/articles/why-haskell-matters
* http://programmers.stackexchange.com/questions/279316/what-exactly-makes-the-haskell-type-system-so-revered-vs-say-java/
* https://www.reddit.com/r/haskell/comments/3f4s3r/advantages_and_disadvantages_of_haskell_in/
* https://code.facebook.com/posts/745068642270222/fighting-spam-with-haskell/
* https://www.reddit.com/r/haskell/comments/3h7fqr/what_are_haskellers_critiques_of_scala/
* https://www.reddit.com/r/haskell/comments/3h5og6/i_now_tend_to_think_that_the_concepts_behind_all/
* http://jfeltz.com/posts/2015-08-30-cost-decreasing-software-architecture.html
* https://medium.com/@bryanmikaelian/haskell-changed-me-f98ebbb84333
* http://www.leonmergen.com/code/2015/12/04/on-stateless-software-design-what-is-state.html
* https://www.futurelearn.com/courses/functional-programming-haskell/1/steps/115453
* http://baatz.io/posts/haskell-in-a-startup/
* https://wiki.haskell.org/Why_Haskell_matters
* https://programmers.stackexchange.com/questions/279316/what-exactly-makes-the-haskell-type-system-so-revered-vs-say-java/
* https://baatz.io/posts/haskell-in-a-startup/
* https://lexi-lambda.github.io/blog/2016/06/12/four-months-with-haskell/?utm_source=all
* http://www.stephendiehl.com/posts/production.html
* https://www.reddit.com/r/haskell/comments/46jaqx/i_really_want_to_use_haskell_but_im_having/
* https://www.wagonhq.com/blog/haskell-for-industry
* http://www.lihaoyi.com/post/WhatsFunctionalProgrammingAllAbout.html
* https://www.lihaoyi.com/post/WhatsFunctionalProgrammingAllAbout.html
* https://kseo.github.io/posts/2017-01-27-how-i-learned-haskell.html
* https://hackernoon.com/easing-haskells-intimidating-glare-2341095e88aa
* https://www.fpcomplete.com/blog/2016/11/mastering-time-to-market-haskell

## Courses and Fundamental topics

* http://learnyouahaskell.com
* http://haskellbook.com/
* https://www.edx.org/course/introduction-functional-programming-delftx-fp101x-0
* http://book.realworldhaskell.org
* http://dev.stephendiehl.com/hask/
* https://learnyouahaskell.github.io/
* https://haskellbook.com/
* https://i.iinfo.cz/files/root/k/real-world-haskell.pdf
* https://wiki.haskell.org
* https://www.fpcomplete.com/
* http://nptel.ac.in/courses/106106137/
* https://www.reddit.com/r/haskell/comments/3j36wc/haskell_tutorial_collection/
* http://www.happylearnhaskelltutorial.com/
* http://learn.hfm.io/higher_order.html
* https://nptel.ac.in/courses/106106137/
* https://www.happylearnhaskelltutorial.com/
* https://github.com/takenobu-hs/type-introduction-illustrated
* http://stackoverflow.com/questions/15530511/how-to-edit-nth-element-in-a-haskell-list
* https://stackoverflow.com/questions/15530511/how-to-edit-nth-element-in-a-haskell-list
* https://www.youtube.com/playlist?list=PLsAEIIjTPIo83ufYYkaPjUwZUuTe1LoZP
* http://www.scs.stanford.edu/11au-cs240h/notes/
* https://www.futurelearn.com/courses/functional-programming-haskell
* https://m.reddit.com/r/haskell/comments/4ooxqc/does_anyone_have_a_progressive_list_of_beginner/
* http://cheatsheet.codeslower.com/
* https://github.com/warreee/haskell
* http://lotz84.github.io/haskellbyexample/
* http://ndmitchell.com/downloads/slides-drive-by_haskell_contributions-09_jun_2017.pdf
* http://bitemyapp.com
* https://www.scs.stanford.edu/11au-cs240h/notes/
* https://cheatsheet.codeslower.com/
* https://lotz84.github.io/haskellbyexample/
* https://ndmitchell.com/downloads/slides-drive-by_haskell_contributions-09_jun_2017.pdf
* https://bitemyapp.com
* https://kseo.github.io/posts/2017-01-28-build-your-haskell-project-continuously.html
* http://www.atamo.com/articles/how-to-read-pearls-by-richard-bird/
* https://www.atamo.com/articles/how-to-read-pearls-by-richard-bird/
* https://mmhaskell.com/blog/2017/1/30/the-easiest-haskell-idiom

## Problems Solving

* https://www.reddit.com/r/haskell/comments/469n8s/best_practices_for_modifiable_state_in_haskell/
* https://www.youtube.com/watch?v=p-NBJm0kIYU
* http://research.microsoft.com/en-us/um/people/simonpj/papers/financial-contracts/contracts-icfp.htm
* https://www.reddit.com/r/haskell/comments/3ez1k4/how_would_you_design_this_program_in_haskell/
* http://blog.ezyang.com/2010/05/design-patterns-in-haskel/
* https://www.reddit.com/r/haskell/comments/3r8x5m/best_way_to_model_a_deck_of_cards/
* http://ideas.cs.uu.nl/FPTutor/
* http://www.parsonsmatt.org/2015/12/09/exploratory_haskell.html
* http://abailly.github.io/posts/event-source.html
* https://research.microsoft.com/en-us/um/people/simonpj/papers/financial-contracts/contracts-icfp.htm
* https://blog.ezyang.com/2010/05/design-patterns-in-haskel/
* https://www.parsonsmatt.org/2015/12/09/exploratory_haskell.html
* https://abailly.github.io/posts/event-source.html
* https://mmhaskell.com/blog/2017/7/24/getting-the-users-opinion-options-in-haskell

## Specific Topics

* https://hackhands.com/lazy-evaluation-works-haskell/
* http://jelv.is/blog/Haskell-Monads-and-Purity/
* http://brandon.si/code/the-state-monad-a-tutorial-for-the-confused/
* http://www.haskellforall.com/2015/10/polymorphism-for-dummies.html
* http://www.gilmi.xyz/post/2015/08/12/how-haskell-models-io
* https://www.reddit.com/r/haskell/comments/3hqvzi/how_to_accomplish_edits_of_a_large_dataset_in
* https://www.reddit.com/r/haskell/comments/3is2ay/what_gui_libray_do_you_userecommend/
* https://www.reddit.com/r/haskell/comments/3wxggs/whats_the_best_way_to_create_gui_for_haskell/
* http://www.alexeyshmalko.com/2015/haskell-string-types/
* https://www.reddit.com/r/haskell/comments/3u5ryh/fast_way_to_serialize_haskell_objects/
* http://kwangyulseo.com/2014/02/06/multi-line-strings-in-haskell/
* https://github.com/asivitz/Hickory
* https://m.reddit.com/r/haskell/comments/4vh4sg/recommended_way_of_dealing_with_db_associations/
* https://m.reddit.com/r/haskell/comments/4shcin/whats_the_best_way_to_create_prebuilt_binaries_of/
* https://jelv.is/blog/Haskell-Monads-and-Purity/
* https://brandon.si/code/the-state-monad-a-tutorial-for-the-confused/
* https://www.haskellforall.com/2015/10/polymorphism-for-dummies.html
* https://www.alexeyshmalko.com/2015/haskell-string-types/
* https://two-wrongs.com/parser-combinators-parsing-for-haskell-beginners
* https://jeltsch.wordpress.com/2016/02/22/generic-programming-in-haskell/
* http://blog.ssanj.net/posts/2014-09-23-A-Simple-Reader-Monad-Example.html
* https://blog.ssanj.net/posts/2014-09-23-A-Simple-Reader-Monad-Example.html
* https://www.athiemann.net/2017/07/02/superrecord.html
* https://www.schoolofhaskell.com/user/fumieval/encoding-objects
* http://www.stephendiehl.com/posts/strings.html
* https://mmhaskell.com/blog/2017/5/15/untangling-haskells-strings
* https://medium.com/@jonathangfischoff/the-partial-options-monoid-pattern-31914a71fc67
* http://vaibhavsagar.com/blog/2017/05/29/imperative-haskell/
* https://vaibhavsagar.com/blog/2017/05/29/imperative-haskell/
* https://hackernoon.com/type-class-patterns-and-anti-patterns-efd045c5af66
* https://philipnilsson.github.io/Badness10k/posts/2017-05-07-escaping-hell-with-monads.html
* https://medium.com/@sjsyrek/five-minutes-to-monoid-fe6f364d0bba
* http://foswiki.cs.uu.nl/foswiki/pub/Swierstra/ResearchTalks/tree-oriented-programming-slides.pdf
* https://hackernoon.com/typeclass-instance-selection-fea1068920e6
* https://two-wrongs.com/dynamic-dispatch-in-haskell-how-to-make-code-extendable
* https://e.xtendo.org/monad#1
* http://www.cs.nott.ac.uk/~pszgmh/fold.pdf
* http://www.parsonsmatt.org/2017/02/17/ooph_data_inheritance.html
* https://www.parsonsmatt.org/2017/02/17/ooph_data_inheritance.html

### Lenses

* http://www.haskellforall.com/2013/05/program-imperatively-using-haskell.html
* https://m.reddit.com/r/haskell/comments/4s84tc/examples_of_why_lens_is_useful/
* http://www.mchaver.com/posts/2017-07-12-lens-tutorial-1.html
* https://www.haskellforall.com/2013/05/program-imperatively-using-haskell.html

### Databases

* http://stackoverflow.com/questions/104960/are-there-any-orm-tools-for-haskell
* https://stackoverflow.com/questions/104960/are-there-any-orm-tools-for-haskell
* https://github.com/begriffs/postgrest/blob/master/README.md

### GUI

* https://begriffs.com/posts/2016-07-27-tikhon-on-frp.html
* https://github.com/gelisam/frp-zoo
* https://www.stackbuilders.com/tutorials/haskell/gui-application/

## Tooling

* https://www.haskell.org/hoogle/
* https://hoogle.haskell.org/
* https://github.com/alanz/HaRe
* https://www.fpcomplete.com/
* https://www.reddit.com/r/haskell/comments/3ni7fb/is_there_any_ide_or_plugin_for_haskell_that_does/
* https://www.reddit.com/r/haskell/comments/3oa0ht/is_there_a_simple_way_to_automatically_visualize/
* https://www.reddit.com/r/haskell/comments/3voe9p/debugging_haskell_programs/
* https://functor.tokyo/blog/2017-07-28-ghc-warnings-you-should-enable

### VIM

* http://www.stephendiehl.com/posts/vim_haskell.html
* http://blog.mno2.org/posts/2011-11-17-vim-plugins-for-haskell-programmers.html
* https://github.com/eagletmt/neco-ghc
* https://github.com/begriffs/haskell-vim-now

Expand All @@ -141,82 +97,40 @@

## Libraries
* https://github.com/krispo/awesome-haskell
* http://haskelliseasy.readthedocs.io/en/latest/
* http://www.haskellforall.com/2015/08/state-of-haskell-ecosystem-august-2015.html?m=1
* http://projects.haskell.org/diagrams/doc/quickstart.html
* https://haskelliseasy.readthedocs.io/en/latest/
* https://www.haskellforall.com/2015/08/state-of-haskell-ecosystem-august-2015.html?m=1
* https://projects.haskell.org/diagrams/doc/quickstart.html

## Architecture

* http://stackoverflow.com/questions/3077866/large-scale-design-in-haskell
* http://stackingyourmonads.benkolera.com/#/
* https://dshevchenko.biz/hs-research/Haskell-in-the-Large.pdf

## Web Development

* https://www.stackbuilders.com/tutorials/functional-full-stack/purescript-bridge/
* https://stackoverflow.com/questions/3077866/large-scale-design-in-haskell

### Server Side

* https://www.slant.co/topics/727/~haskell-web-frameworks-for-building-restful-web-services
* http://stackoverflow.com/questions/5645168/comparing-haskells-snap-and-yesod-web-frameworks
* http://zyghost.com/articles/Renderable.html
* https://stackoverflow.com/questions/5645168/comparing-haskells-snap-and-yesod-web-frameworks
* https://zyghost.com/articles/Renderable.html
* https://robots.thoughtbot.com/a-rest-api-with-haskell-and-snap

### Client Side

* http://haste-lang.org/
* https://haste-lang.org/
* https://github.com/ghcjs/ghcjs
* https://www.airpair.com/haskell/posts/haskell-tutorial-introduction-to-web-apps
* http://ifeanyi.co/posts/client-side-haskell/
* https://ifeanyi.co/posts/client-side-haskell/
* https://speakerdeck.com/mkscrg/electron-react-and-haskell-oh-my
* http://stackoverflow.com/questions/9210412/recommended-reading-tutorials-to-understand-reactive-banana-frp-library

## Examples and Projects

* https://m.reddit.com/r/haskell/comments/571tu3/what_are_some_good_open_source_projects_for/
* http://utdemir.com/posts/modeling-the-hardest-logic-puzzle-ever-in-haskell.html
* http://zyghost.com/articles/Renderable.html
* https://www.reddit.com/r/haskell/comments/3l2b7q/good_midsized_projects_for_learning_haskell/
* https://gist.github.com/ToJans
* https://www.reddit.com/r/haskell/comments/3pqdln/large_applications_written_using_frp/
* https://github.com/divipp/lensref/wiki
* https://www.youtube.com/watch?v=sl2zo7tzrO8
* https://lotz84.github.io/haskellbyexample/
* https://m.reddit.com/r/haskell/comments/557fx1/how_to_model_road_intersections/
* http://bitemyapp.com/posts/2015-04-26-installing-a-haskell-game.html
* https://github.com/pmikkelsen/game-of-life
* https://github.com/rjohnsondev/haskellshop
* https://github.com/google/codeworld
* https://github.com/jtdaugherty/brick
* https://github.com/lunky/IntroToFunctionalProgramming
* http://www.kovach.me/posts/2014-08-09-twitter.html

* https://stackoverflow.com/questions/9210412/recommended-reading-tutorials-to-understand-reactive-banana-frp-library

## Style

* http://stackoverflow.com/questions/7746894/are-there-pronounceable-names-for-common-haskell-operators
* https://www.reddit.com/r/haskell/comments/3ple0s/google_styleguide_for_haskell/
* https://m.reddit.com/r/haskell/comments/578amb/haskell_code_standards/
* https://stackoverflow.com/questions/7746894/are-there-pronounceable-names-for-common-haskell-operators

## Advanced

* https://ocharles.org.uk/blog/pages/2014-12-01-24-days-of-ghc-extensions.html
* http://bartoszmilewski.com/2014/10/28/category-theory-for-programmers-the-preface/
* https://www.reddit.com/r/haskell/comments/3m9nyp/category_theory_the_essence_of_interfacebased/
* https://www.reddit.com/r/haskell/comments/3k17md/is_there_anything_more_powerful_than_monads/
* https://www.reddit.com/r/haskell/comments/3lnhkp/monad_and_comonad_insights/
* http://fvisser.nl/post/2013/okt/1/fclabels-2.0.html
* http://www.parsonsmatt.org/2015/11/15/template_haskell.html
* https://www.reddit.com/r/haskell/comments/3vfrik/can_i_put_constraints_on_type_constructors/
* https://www.reddit.com/r/haskell/comments/3wxh7a/transducers_why_and_how/
* https://www.reddit.com/r/haskell/comments/3wkofz/traversal_of_lens_with_maybe_fields/
* https://www.parsonsmatt.org/2015/11/15/template_haskell.html
* https://wiki.haskell.org/GADTs_for_dummies
* https://m.reddit.com/r/haskell/comments/4sihcv/haskell_the_bad_parts/
* https://blog.jle.im/entry/io-monad-considered-harmful.html
* https://m.reddit.com/r/haskell/comments/4prbba/what_can_i_do_with_comaybe/
* http://www.haskellforall.com/2016/02/auto-generate-command-line-interface.html
* http://www.haskellforall.com/2016/02/from-mathematics-to-map-reduce.html
* https://www.haskellforall.com/2016/02/auto-generate-command-line-interface.html
* https://www.haskellforall.com/2016/02/from-mathematics-to-map-reduce.html

## Fun

* http://www.willamette.edu/~fruehr/haskell/evolution.html
* https://www.willamette.edu/~fruehr/haskell/evolution.html
Loading
Loading