I'd like to write codes for algorithms and data structures by F#.
We have many many books for them in imperative or objective-oriented languages, but we have few books in functional languages. We have some famous books in functional languages, but they are difficult to me. And, for some reasons, I'd like to study the themes by F#. Some comments are here.
- Richard Bird, Pearls of Functional Algorithm Design, written by Haskell: This is very difficult and we meet many unusual themes in it. I'd like to study usual themes. Furthermore it treats only algorithms.
- Chris Okasaki, Purely Functional Data Structures, written by SML and Haskell: We have only data structure themes in this book, and small amount of them.
- Masood, Learning F# Functional Data Structures and Algorithms written by F#: The codes in this book is written by imperative style, I think. I'd like to study functional style algorithms.
- vkostrykov, scalacaster written by Scala: Data structure objects seem to be mutable objects. I'd like to study immutable style.
- Rabhi and Lapalme, Algorithms A Functional Programming Approach written by Haskell: This looks more algorithms than others.
- (NEW! 2020) Bird, Gibbons, Algorithm Design with Haskell. Now I reading this book (at 2022/1), and I am rewriting to F#! This book includes data structures, and is relatively easy to read.
Hence I decide to write codes by myself.
For my study and seminars I also contains programs by several languages other than F#, e.g., C++, Python.
- AOJ: Codes for the contests in AOJ. This site also contains some fundamental algorithms and data structure codes in the form of problems, and is very good introductory one.
- AtCoder: Codes for the contests in AtCoder.
- DataStructures: Codes for data structures. I added comments for referenced sites, pages, book pages.
- Book-AlgorithmsAndDataStructuresForProgrammingContests: Codes for this book.
- Library: Codes for important processes.
I know their names, but I do not read them thoroughly.
- GitHub: F# Core Library Documentation (community edition)
- F# を知ってほしい (in Japanese), by cannorin
- docs.microsoft.com
- F# for fun and profit
- Wikibook: F# Programming
- Functional Programming Patterns
- Descriptions on "Pattern: Chaining callbacks with continuation" from P.85 helps me very much.
Monadic Bind
- Russel, Essential Functional-First F#
- コンピュテーション式
- F# for Math series by @7shi (in Japanese)
- Write yourself a scheme in 48 hours
- https://source.dot.net/
- C# Library for AtCoder: ac-library-csharp
- Project Euler
- https://github.com/vkostyukov/scalacaster
- Rabhi, Lapalme, Algorithms A Functional Programming Approach
- Heineman, Pollice, Selkow, Algorithms in a Nutshell
- Richard Bird, Pearls of Functional Algorithm Design
- Skiena, The Algorithm Design Manual
- Advanced Data Structures
- (In Japanese) 紀平拓男、春日伸弥、プログラミングの宝箱 アルゴリズムとデータ構造 第 2 版
- (In Japanese) 渡部有隆, Ozy(協力), 秋葉 拓哉(協力), プログラミングコンテスト攻略のためのアルゴリズムとデータ構造, for buying pdf
- PENSE-MOI: This site describes the F# implementation of the algorithms in Chris Okasaki's "Purely functional data structures".
- FsProCon, AtCoder
- F# : Advanced Data Structures
- Open Data Structures
- 幾何の計算にコンピュータを使う 易しくない 計算幾何学
- nobsun/ProjectEuler by Haskell
- TheAlgorithms / Python
- drken1215, book_algorithm_solution
- drken1215, algorithm
- mathcodes: by myself
From the book Domain Modeling Made Functional by Wlaschin.
- In the error-handling context, the bind function converts a Result-generating function into a two-track function. It’s used to chain Result-generating functions "in series." More generally, the bind function is a key component of a monad.
- In the error-handling context, the map function converts a one-track function into a two-track function.
- The monadic approach to composition refers to combining functions in series using bind.
- The applicative approach to composition refers to combining results in parallel.