41554 blogs · [ { "id": "01a07df3-0de9-7129-9fe8-42d4e2a8d7d8", "title": "Weaving design, part 2", "url": "https://fsharpforfunandprofit.com/posts/designing-weaving-software-2/", "published_at": "2025-12-28T00:00:00+00:00" }, { "id": "01a07df3-0de9-7129-9fe8-42d4e380ba61", "title": "Designing weaving software", "url": "https://fsharpforfunandprofit.com/posts/designing-weaving-software/", "published_at": "2025-12-19T00:00:00+00:00" }, { "id": "01a07df3-0de9-7129-9fe8-42d4e3ddc39c", "title": "The EDFH is defeated once again", "url": "https://fsharpforfunandprofit.com/posts/return-of-the-edfh-3/", "published_at": "2021-02-16T00:00:00+00:00" }, { "id": "01a07df3-0de9-7129-9fe8-42d4e436a5cc", "title": "Generating interesting inputs for property-based testing", "url": "https://fsharpforfunandprofit.com/posts/return-of-the-edfh-2/", "published_at": "2021-02-15T00:00:00+00:00" }, { "id": "01a07df3-0de9-7129-9fe8-42d4e4e7af81", "title": "The 'The Return of the EDFH' series", "url": "https://fsharpforfunandprofit.com/series/return-of-the-edfh/", "published_at": "2021-02-14T00:00:00+00:00" }, { "id": "01a07df3-0de9-7129-9fe8-42d4e5ab3bd5", "title": "The Return of the Enterprise Developer From Hell", "url": "https://fsharpforfunandprofit.com/posts/return-of-the-edfh/", "published_at": "2021-02-14T00:00:00+00:00" }, { "id": "01a07df3-0de9-7129-9fe8-42d4e6aaceb8", "title": "Terms and Conditions", "url": "https://fsharpforfunandprofit.com/about/terms/", "published_at": "2021-01-01T00:00:00+00:00" }, { "id": "01a07df3-0de9-7129-9fe8-42d4e6f7b991", "title": "Revisiting the six approaches", "url": "https://fsharpforfunandprofit.com/posts/dependencies-5/", "published_at": "2020-12-24T00:00:00+00:00" }, { "id": "01a07df3-0de9-7129-9fe8-42d4e6fbc2a1", "title": "Dependency Interpretation", "url": "https://fsharpforfunandprofit.com/posts/dependencies-4/", "published_at": "2020-12-23T00:00:00+00:00" }, { "id": "01a07df3-0de9-7129-9fe8-42d4e77bf225", "title": "Dependency injection using the Reader monad", "url": "https://fsharpforfunandprofit.com/posts/dependencies-3/", "published_at": "2020-12-22T00:00:00+00:00" }, { "id": "01a07df3-0de9-7129-9fe8-42d4e87a5cc7", "title": "Dependency injection using parameters", "url": "https://fsharpforfunandprofit.com/posts/dependencies-2/", "published_at": "2020-12-21T00:00:00+00:00" }, { "id": "01a07df3-0de9-7129-9fe8-42d4e92de531", "title": "Six approaches to dependency injection", "url": "https://fsharpforfunandprofit.com/posts/dependencies/", "published_at": "2020-12-20T00:00:00+00:00" }, { "id": "01a07df3-0de9-7129-9fe8-42d4e9b2619d", "title": "Low-risk ways to use F# at work", "url": "https://fsharpforfunandprofit.com/series/low-risk-ways-to-use-fsharp-at-work/", "published_at": "2020-01-01T00:00:00+00:00" }, { "id": "01a07df3-0de9-7129-9fe8-42d4ea6fd122", "title": "Recursive types and folds", "url": "https://fsharpforfunandprofit.com/series/recursive-types-and-folds/", "published_at": "2020-01-01T00:00:00+00:00" }, { "id": "01a07df3-0de9-7129-9fe8-42d4eaf3ea4a", "title": "The 'Annotated walkthroughs' series", "url": "https://fsharpforfunandprofit.com/series/annotated-walkthroughs/", "published_at": "2020-01-01T00:00:00+00:00" }, { "id": "01a07df3-0de9-7129-9fe8-42d4eaf727ae", "title": "The 'Computation Expressions' series", "url": "https://fsharpforfunandprofit.com/series/computation-expressions/", "published_at": "2020-01-01T00:00:00+00:00" }, { "id": "01a07df3-0de9-7129-9fe8-42d4ebcbdee3", "title": "The 'dependency cycle' series", "url": "https://fsharpforfunandprofit.com/series/dependency-cycles/", "published_at": "2020-01-01T00:00:00+00:00" }, { "id": "01a07df3-0de9-7129-9fe8-42d4ebf66778", "title": "The 'designing with types' series", "url": "https://fsharpforfunandprofit.com/series/designing-with-types/", "published_at": "2020-01-01T00:00:00+00:00" }, { "id": "01a07df3-0de9-7129-9fe8-42d4ec4a3327", "title": "The 'expressions and syntax' series", "url": "https://fsharpforfunandprofit.com/series/expressions-and-syntax/", "published_at": "2020-01-01T00:00:00+00:00" }, { "id": "01a07df3-0de9-7129-9fe8-42d4ed1016b3", "title": "The 'functional approach to authorization' series", "url": "https://fsharpforfunandprofit.com/series/a-functional-approach-to-authorization/", "published_at": "2020-01-01T00:00:00+00:00" }, { "id": "01a07df3-0de9-7129-9fe8-42d4ed45606f", "title": "The 'Handling State' series", "url": "https://fsharpforfunandprofit.com/series/handling-state/", "published_at": "2020-01-01T00:00:00+00:00" }, { "id": "01a07df3-0de9-7129-9fe8-42d4ee273887", "title": "The 'object-oriented programming in F#' series", "url": "https://fsharpforfunandprofit.com/series/object-oriented-programming-in-fsharp/", "published_at": "2020-01-01T00:00:00+00:00" }, { "id": "01a07df3-0de9-7129-9fe8-42d4ee3f866c", "title": "The 'Optimization' series", "url": "https://fsharpforfunandprofit.com/series/optimization/", "published_at": "2020-01-01T00:00:00+00:00" }, { "id": "01a07df3-0de9-7129-9fe8-42d4eed77fa0", "title": "The 'porting from C#' series", "url": "https://fsharpforfunandprofit.com/series/porting-from-csharp/", "published_at": "2020-01-01T00:00:00+00:00" }, { "id": "01a07df3-0de9-7129-9fe8-42d4eeffb26d", "title": "The 'Property Based Testing' series", "url": "https://fsharpforfunandprofit.com/series/property-based-testing/", "published_at": "2020-01-01T00:00:00+00:00" }, { "id": "01a07df3-0de9-7129-9fe8-42d4ef3e033c", "title": "The 'recipe for a functional app' series", "url": "https://fsharpforfunandprofit.com/series/a-recipe-for-a-functional-app/", "published_at": "2020-01-01T00:00:00+00:00" }, { "id": "01a07df3-0de9-7129-9fe8-42d4ef9176bc", "title": "The 'thinking functionally' series", "url": "https://fsharpforfunandprofit.com/series/thinking-functionally/", "published_at": "2020-01-01T00:00:00+00:00" }, { "id": "01a07df3-0de9-7129-9fe8-42d4f01efbb2", "title": "The 'Understanding F# types' series", "url": "https://fsharpforfunandprofit.com/series/understanding-fsharp-types/", "published_at": "2020-01-01T00:00:00+00:00" }, { "id": "01a07df3-0de9-7129-9fe8-42d4f0333348", "title": "The 'Understanding monoids' series", "url": "https://fsharpforfunandprofit.com/series/understanding-monoids/", "published_at": "2020-01-01T00:00:00+00:00" }, { "id": "01a07df3-0de9-7129-9fe8-42d4f0749f53", "title": "The 'Why use F#' series", "url": "https://fsharpforfunandprofit.com/series/why-use-fsharp/", "published_at": "2020-01-01T00:00:00+00:00" }, { "id": "01a07df3-0de9-7129-9fe8-42d4f0e84925", "title": "Understanding Map and Apply and Bind", "url": "https://fsharpforfunandprofit.com/series/map-and-bind-and-apply-oh-my/", "published_at": "2020-01-01T00:00:00+00:00" }, { "id": "01a07df3-0de9-7129-9fe8-42d4f1b827ab", "title": "Understanding Parser Combinators", "url": "https://fsharpforfunandprofit.com/series/understanding-parser-combinators/", "published_at": "2020-01-01T00:00:00+00:00" }, { "id": "01a07df3-0de9-7129-9fe8-42d4f215ea71", "title": "Against Railway-Oriented Programming", "url": "https://fsharpforfunandprofit.com/posts/against-railway-oriented-programming/", "published_at": "2019-12-20T00:00:00+00:00" }, { "id": "01a07df3-0de9-7129-9fe8-42d4f28c878a", "title": "Why F# is the best enterprise language", "url": "https://fsharpforfunandprofit.com/posts/fsharp-is-the-best-enterprise-language/", "published_at": "2018-12-20T00:00:00+00:00" }, { "id": "01a07df3-0de9-7129-9fe8-42d4f38bc17a", "title": "Serializing your domain model", "url": "https://fsharpforfunandprofit.com/posts/serializing-your-domain-model/", "published_at": "2017-12-20T00:00:00+00:00" }, { "id": "01a07df3-0de9-7129-9fe8-42d4f3eb4aea", "title": "Functional approaches to dependency injection", "url": "https://fsharpforfunandprofit.com/posts/dependency-injection-1/", "published_at": "2016-12-05T00:00:00+00:00" }, { "id": "01a07df3-0de9-7129-9fe8-42d4f4641875", "title": "Happy F# Day!", "url": "https://fsharpforfunandprofit.com/posts/happy-fsharp-day-2/", "published_at": "2016-04-12T00:00:00+00:00" }, { "id": "01a07df3-0de9-7129-9fe8-42d4f4f9887c", "title": "Thirteen ways of looking at a turtle - addendum", "url": "https://fsharpforfunandprofit.com/posts/13-ways-of-looking-at-a-turtle-3/", "published_at": "2015-12-07T00:00:00+00:00" }, { "id": "01a07df3-0de9-7129-9fe8-42d4f5a0addc", "title": "Thirteen ways of looking at a turtle (part 2)", "url": "https://fsharpforfunandprofit.com/posts/13-ways-of-looking-at-a-turtle-2/", "published_at": "2015-12-06T00:00:00+00:00" }, { "id": "01a07df3-0de9-7129-9fe8-42d4f5c912d9", "title": "Thirteen ways of looking at a turtle", "url": "https://fsharpforfunandprofit.com/posts/13-ways-of-looking-at-a-turtle/", "published_at": "2015-12-05T00:00:00+00:00" }, { "id": "01a07df3-0de9-7129-9fe8-42d4f68f251b", "title": "Writing a JSON parser from scratch", "url": "https://fsharpforfunandprofit.com/posts/understanding-parser-combinators-4/", "published_at": "2015-11-13T00:00:00+00:00" }, { "id": "01a07df3-0de9-7129-9fe8-42d4f69ef390", "title": "Improving the parser library", "url": "https://fsharpforfunandprofit.com/posts/understanding-parser-combinators-3/", "published_at": "2015-11-12T00:00:00+00:00" }, { "id": "01a07df3-0de9-7129-9fe8-42d4f7499838", "title": "Building a useful set of parser combinators", "url": "https://fsharpforfunandprofit.com/posts/understanding-parser-combinators-2/", "published_at": "2015-11-11T00:00:00+00:00" }, { "id": "01a07df3-0de9-7129-9fe8-42d4f7758bc9", "title": "Understanding Parser Combinators", "url": "https://fsharpforfunandprofit.com/posts/understanding-parser-combinators/", "published_at": "2015-11-10T00:00:00+00:00" }, { "id": "01a07df3-0de9-7129-9fe8-42d4f7bb1f6c", "title": "Trees in the real world", "url": "https://fsharpforfunandprofit.com/posts/recursive-types-and-folds-3b/", "published_at": "2015-08-25T00:00:00+00:00" }, { "id": "01a07df3-0de9-7129-9fe8-42d4f849d802", "title": "Generic recursive types", "url": "https://fsharpforfunandprofit.com/posts/recursive-types-and-folds-3/", "published_at": "2015-08-24T00:00:00+00:00" }, { "id": "01a07df3-0de9-7129-9fe8-42d4f8fec6e7", "title": "Understanding Folds", "url": "https://fsharpforfunandprofit.com/posts/recursive-types-and-folds-2b/", "published_at": "2015-08-23T00:00:00+00:00" }, { "id": "01a07df3-0de9-7129-9fe8-42d4f93d64e8", "title": "Introducing Folds", "url": "https://fsharpforfunandprofit.com/posts/recursive-types-and-folds-2/", "published_at": "2015-08-22T00:00:00+00:00" }, { "id": "01a07df3-0de9-7129-9fe8-42d4fa110c12", "title": "Catamorphism examples", "url": "https://fsharpforfunandprofit.com/posts/recursive-types-and-folds-1b/", "published_at": "2015-08-21T00:00:00+00:00" }, { "id": "01a07df3-0de9-7129-9fe8-42d4fafaaceb", "title": "Introduction to recursive types", "url": "https://fsharpforfunandprofit.com/posts/recursive-types-and-folds/", "published_at": "2015-08-20T00:00:00+00:00" }, { "id": "01a07df3-0de9-7129-9fe8-42d4fb1e802e", "title": "Choosing between collection functions", "url": "https://fsharpforfunandprofit.com/posts/list-module-functions/", "published_at": "2015-08-14T00:00:00+00:00" }, { "id": "01a07df3-0de9-7129-9fe8-42d4fb806812", "title": "Algebraic type sizes and domain modelling", "url": "https://fsharpforfunandprofit.com/posts/type-size-and-design/", "published_at": "2015-08-13T00:00:00+00:00" }, { "id": "01a07df3-0de9-7129-9fe8-42d4fbb6a2b0", "title": "Map and Bind and Apply, a summary", "url": "https://fsharpforfunandprofit.com/posts/elevated-world-7/", "published_at": "2015-08-08T00:00:00+00:00" }, { "id": "01a07df3-0de9-7129-9fe8-42d4fc0fc837", "title": "Reinventing the Reader monad", "url": "https://fsharpforfunandprofit.com/posts/elevated-world-6/", "published_at": "2015-08-07T00:00:00+00:00" }, { "id": "01a07df3-0de9-7129-9fe8-42d4fc552644", "title": "Using map, apply, bind and sequence in practice", "url": "https://fsharpforfunandprofit.com/posts/elevated-world-5/", "published_at": "2015-08-06T00:00:00+00:00" }, { "id": "01a07df3-0de9-7129-9fe8-42d4fcac053b", "title": "Understanding traverse and sequence", "url": "https://fsharpforfunandprofit.com/posts/elevated-world-4/", "published_at": "2015-08-05T00:00:00+00:00" }, { "id": "01a07df3-0de9-7129-9fe8-42d4fcfb7400", "title": "Using the core functions in practice", "url": "https://fsharpforfunandprofit.com/posts/elevated-world-3/", "published_at": "2015-08-04T00:00:00+00:00" }, { "id": "01a07df3-0de9-7129-9fe8-42d4fd6495bb", "title": "Understanding bind", "url": "https://fsharpforfunandprofit.com/posts/elevated-world-2/", "published_at": "2015-08-03T00:00:00+00:00" }, { "id": "01a07df3-0de9-7129-9fe8-42d4fe0c75e8", "title": "Understanding map and apply", "url": "https://fsharpforfunandprofit.com/posts/elevated-world/", "published_at": "2015-08-02T00:00:00+00:00" }, { "id": "01a07df3-0de9-7129-9fe8-42d4fe702707", "title": "Swapping type-safety for high performance using compiler directives", "url": "https://fsharpforfunandprofit.com/posts/typesafe-performance-with-compiler-directives/", "published_at": "2015-07-21T00:00:00+00:00" }, { "id": "01a07df3-0de9-7129-9fe8-42d4fe8700ec", "title": "Introvert and extrovert programming languages", "url": "https://fsharpforfunandprofit.com/posts/introvert-vs-extrovert/", "published_at": "2015-07-18T00:00:00+00:00" }, { "id": "01a07df3-0de9-7129-9fe8-42d4febf3993", "title": "F# decompiled into C#", "url": "https://fsharpforfunandprofit.com/posts/fsharp-decompiled/", "published_at": "2015-07-15T00:00:00+00:00" }, { "id": "01a07df3-0de9-7129-9fe8-42d4ffb8e2e6", "title": "Refactoring the Monadster", "url": "https://fsharpforfunandprofit.com/posts/monadster-3/", "published_at": "2015-07-09T00:00:00+00:00" }, { "id": "01a07df3-0de9-7129-9fe8-42d5007778ca", "title": "Completing the body of the Monadster", "url": "https://fsharpforfunandprofit.com/posts/monadster-2/", "published_at": "2015-07-08T00:00:00+00:00" }, { "id": "01a07df3-0de9-7129-9fe8-42d500b83d86", "title": "Dr Frankenfunctor and the Monadster", "url": "https://fsharpforfunandprofit.com/posts/monadster/", "published_at": "2015-07-07T00:00:00+00:00" }, { "id": "01a07df3-0de9-7129-9fe8-42d5013c2d94", "title": "We don't need no stinking UML diagrams", "url": "https://fsharpforfunandprofit.com/posts/no-uml-diagrams/", "published_at": "2015-06-30T00:00:00+00:00" }, { "id": "01a07df3-0de9-7129-9fe8-42d5022ee0c3", "title": "Happy F# Day!", "url": "https://fsharpforfunandprofit.com/posts/happy-fsharp-day/", "published_at": "2015-04-12T00:00:00+00:00" }, { "id": "01a07df3-0de9-7129-9fe8-42d5023be3eb", "title": "Enterprise Tic-Tac-Toe, part 2", "url": "https://fsharpforfunandprofit.com/posts/enterprise-tic-tac-toe-2/", "published_at": "2015-02-16T00:00:00+00:00" }, { "id": "01a07df3-0de9-7129-9fe8-42d5030cb87a", "title": "Enterprise Tic-Tac-Toe", "url": "https://fsharpforfunandprofit.com/posts/enterprise-tic-tac-toe/", "published_at": "2015-02-12T00:00:00+00:00" }, { "id": "01a07df3-0de9-7129-9fe8-42d504009dc5", "title": "Is your programming language unreasonable?", "url": "https://fsharpforfunandprofit.com/posts/is-your-language-unreasonable/", "published_at": "2015-01-26T00:00:00+00:00" }, { "id": "01a07df3-0de9-7129-9fe8-42d504cdc626", "title": "Using types as access tokens", "url": "https://fsharpforfunandprofit.com/posts/capability-based-security-3/", "published_at": "2015-01-20T00:00:00+00:00" }, { "id": "01a07df3-0de9-7129-9fe8-42d505535b1e", "title": "Constraining capabilities based on identity and role", "url": "https://fsharpforfunandprofit.com/posts/capability-based-security-2/", "published_at": "2015-01-19T00:00:00+00:00" }, { "id": "01a07df3-0de9-7129-9fe8-42d5061e1799", "title": "A functional approach to authorization", "url": "https://fsharpforfunandprofit.com/posts/capability-based-security/", "published_at": "2015-01-18T00:00:00+00:00" }, { "id": "01a07df3-0de9-7129-9fe8-42d506418ea7", "title": "Choosing properties in practice, part 3", "url": "https://fsharpforfunandprofit.com/posts/property-based-testing-5/", "published_at": "2014-12-15T00:00:00+00:00" }, { "id": "01a07df3-0de9-7129-9fe8-42d506f6cf8a", "title": "Choosing properties in practice, part 2", "url": "https://fsharpforfunandprofit.com/posts/property-based-testing-4/", "published_at": "2014-12-14T00:00:00+00:00" }, { "id": "01a07df3-0de9-7129-9fe8-42d50768951e", "title": "Choosing properties in practice, part 1", "url": "https://fsharpforfunandprofit.com/posts/property-based-testing-3/", "published_at": "2014-12-13T00:00:00+00:00" }, { "id": "01a07df3-0de9-7129-9fe8-42d508508ee2", "title": "Choosing properties for property-based testing", "url": "https://fsharpforfunandprofit.com/posts/property-based-testing-2/", "published_at": "2014-12-12T00:00:00+00:00" }, { "id": "01a07df3-0de9-7129-9fe8-42d50913fcb7", "title": "Understanding FsCheck", "url": "https://fsharpforfunandprofit.com/posts/property-based-testing-1/", "published_at": "2014-12-02T00:00:00+00:00" }, { "id": "01a07df3-0de9-7129-9fe8-42d50966606c", "title": "The Enterprise Developer from Hell", "url": "https://fsharpforfunandprofit.com/posts/property-based-testing/", "published_at": "2014-12-01T00:00:00+00:00" }, { "id": "01a07df3-0de9-7129-9fe8-42d509a619ff", "title": "Calculator Walkthrough: Part 4", "url": "https://fsharpforfunandprofit.com/posts/calculator-complete-v2/", "published_at": "2014-10-16T00:00:00+00:00" }, { "id": "01a07df3-0de9-7129-9fe8-42d509b72958", "title": "Calculator Walkthrough: Part 3", "url": "https://fsharpforfunandprofit.com/posts/calculator-complete-v1/", "published_at": "2014-10-15T00:00:00+00:00" }, { "id": "01a07df3-0de9-7129-9fe8-42d509c826f4", "title": "Calculator Walkthrough: Part 2", "url": "https://fsharpforfunandprofit.com/posts/calculator-implementation/", "published_at": "2014-10-14T00:00:00+00:00" }, { "id": "01a07df3-0de9-7129-9fe8-42d50a026440", "title": "Calculator Walkthrough: Part 1", "url": "https://fsharpforfunandprofit.com/posts/calculator-design/", "published_at": "2014-10-13T00:00:00+00:00" }, { "id": "01a07df3-0de9-7129-9fe8-42d50a757354", "title": "Other interesting ways of using F# at work", "url": "https://fsharpforfunandprofit.com/posts/low-risk-ways-to-use-fsharp-at-work-5/", "published_at": "2014-04-24T00:00:00+00:00" }, { "id": "01a07df3-0de9-7129-9fe8-42d50b01b022", "title": "Using F# for database related tasks", "url": "https://fsharpforfunandprofit.com/posts/low-risk-ways-to-use-fsharp-at-work-4/", "published_at": "2014-04-23T00:00:00+00:00" }, { "id": "01a07df3-0de9-7129-9fe8-42d50b6adb0c", "title": "Using F# for testing", "url": "https://fsharpforfunandprofit.com/posts/low-risk-ways-to-use-fsharp-at-work-3/", "published_at": "2014-04-22T00:00:00+00:00" }, { "id": "01a07df3-0de9-7129-9fe8-42d50c48fb81", "title": "Using F# for development and devops scripts", "url": "https://fsharpforfunandprofit.com/posts/low-risk-ways-to-use-fsharp-at-work-2/", "published_at": "2014-04-21T00:00:00+00:00" }, { "id": "01a07df3-0de9-7129-9fe8-42d50c5e806d", "title": "Twenty six low-risk ways to use F# at work", "url": "https://fsharpforfunandprofit.com/posts/low-risk-ways-to-use-fsharp-at-work/", "published_at": "2014-04-20T00:00:00+00:00" }, { "id": "01a07df3-0de9-7129-9fe8-42d50cd033c3", "title": "Analysis of Roslyn vs. the F# compiler", "url": "https://fsharpforfunandprofit.com/posts/roslyn-vs-fsharp-compiler/", "published_at": "2014-04-12T00:00:00+00:00" }, { "id": "01a07df3-0de9-7129-9fe8-42d50d6f3cbe", "title": "Commentary on 'Roman Numerals Kata with Commentary'", "url": "https://fsharpforfunandprofit.com/posts/roman-numeral-kata/", "published_at": "2014-01-12T00:00:00+00:00" }, { "id": "01a07df3-0de9-7129-9fe8-42d50d723382", "title": "Working with non-monoids", "url": "https://fsharpforfunandprofit.com/posts/monoids-part3/", "published_at": "2013-10-25T00:00:00+00:00" }, { "id": "01a07df3-0de9-7129-9fe8-42d50ddca3fc", "title": "Monoids in practice", "url": "https://fsharpforfunandprofit.com/posts/monoids-part2/", "published_at": "2013-10-24T00:00:00+00:00" }, { "id": "01a07df3-0de9-7129-9fe8-42d50e3c2a11", "title": "Monoids without tears", "url": "https://fsharpforfunandprofit.com/posts/monoids-without-tears/", "published_at": "2013-10-23T00:00:00+00:00" }, { "id": "01a07df3-0de9-7129-9fe8-42d50ee17dee", "title": "Railway oriented programming: Carbonated edition", "url": "https://fsharpforfunandprofit.com/posts/railway-oriented-programming-carbonated/", "published_at": "2013-06-22T00:00:00+00:00" }, { "id": "01a07df3-0de9-7129-9fe8-42d50f762e6f", "title": "Cycles and modularity in the wild", "url": "https://fsharpforfunandprofit.com/posts/cycles-and-modularity-in-the-wild/", "published_at": "2013-05-28T00:00:00+00:00" }, { "id": "01a07df3-0de9-7129-9fe8-42d510272a48", "title": "Cyclic dependencies are evil", "url": "https://fsharpforfunandprofit.com/posts/cyclic-dependencies/", "published_at": "2013-05-27T00:00:00+00:00" }, { "id": "01a07df3-0de9-7129-9fe8-42d510b93fe8", "title": "Refactoring to remove cyclic dependencies", "url": "https://fsharpforfunandprofit.com/posts/removing-cyclic-dependencies/", "published_at": "2013-05-27T00:00:00+00:00" }, { "id": "01a07df3-0de9-7129-9fe8-42d5119c296f", "title": "Organizing modules in a project", "url": "https://fsharpforfunandprofit.com/posts/recipe-part3/", "published_at": "2013-05-26T00:00:00+00:00" }, { "id": "01a07df3-0de9-7129-9fe8-42d511ad3606", "title": "Why I won't be writing a monad tutorial", "url": "https://fsharpforfunandprofit.com/posts/why-i-wont-be-writing-a-monad-tutorial/", "published_at": "2013-05-14T00:00:00+00:00" }, { "id": "01a07df3-0de9-7129-9fe8-42d51279c2e6", "title": "Railway oriented programming", "url": "https://fsharpforfunandprofit.com/posts/recipe-part2/", "published_at": "2013-05-11T00:00:00+00:00" } ] posts Claim your blog
Back to F Sharp for Fun and Profit
Blog · corpus.blog/blogs/fsharpforfunandprofit.com/posts

F Sharp for Fun and Profit

fsharpforfunandprofit.com

2025

2021

2020

2019

2018

2017

2016

2015

2014

2013