Skip to content

Instantly share code, notes, and snippets.

A response to http://ayende.com/blog/170849/why-ravendb-isnt-written-in-f-or-the-cost-of-the-esoteric-choice

Why my F# projects don't use RavenDB, or the cost of the esoteric choice

As you know, I generally recommend using SqlServer for data storage.

But many people have suggested that using RavenDB rather than SqlServer would dramatically reduce the development effort.

My reply to that was that using RavenDB would also lead to a lot more complexity, reduced support by other teams, harder to find DBAs and increased costs all around.

@swlaschin
swlaschin / AdditionPropertyCheck.fsx
Created July 4, 2015 07:46
Demonstration of using FsCheck to test "add" implementations
// =================================
// Demonstration of using FsCheck to
// test "add" implementations
//
// This is a more thorough version of the example
// in the talk at fsharpforfunandprofit.com/pbt
// =================================
System.IO.Directory.SetCurrentDirectory __SOURCE_DIRECTORY__
@swlaschin
swlaschin / monadster.fsx
Last active October 19, 2022 22:05
F# scripts demonstrating a custom state monad. Related blog post: http://fsharpforfunandprofit.com/posts/monadster/
(*
monadster.fsx
Demonstrates how the state monad works
See also monadster2.fsx for the refactored version using computation expressions.
Related blog post: http://fsharpforfunandprofit.com/posts/monadster/
*)
@swlaschin
swlaschin / typesafe-performance-with-compiler-directives-1.fsx
Created July 21, 2015 23:13
Demonstrates some techniques for performance improvements while remaining type-safe. Related blog post: http://fsharpforfunandprofit.com/posts/typesafe-performance-with-compiler-directives/
(*
typesafe-performance-with-compiler-directives-1.fsx
Demonstrates some techniques for performance improvements while remaining type-safe.
Related blog post: http://fsharpforfunandprofit.com/posts/typesafe-performance-with-compiler-directives/
See also the others in this series: "typesafe-performance-with-compiler-directives-XXX".fsx
*)
@swlaschin
swlaschin / RecursiveTypesAndFold-1.fsx
Created August 30, 2015 12:50
Introduction to recursive types and catamorphisms. Related blog post: http://fsharpforfunandprofit.com/posts/recursive-types-and-folds/
(*
RecursiveTypesAndFold-1.fsx
Related blog post: http://fsharpforfunandprofit.com/posts/recursive-types-and-folds/
*)
// ==============================================
// PART 1 - Introduction to recursive types and catamorphisms
// ==============================================
(*
RecursiveTypesAndFold-1b.fsx
Related blog post: http://fsharpforfunandprofit.com/posts/recursive-types-and-folds-1b/
*)
// ==============================================
// PART 1b - Catamorphism examples
// ==============================================
(*
RecursiveTypesAndFold-2.fsx
Related blog post: http://fsharpforfunandprofit.com/posts/recursive-types-and-folds-2/
*)
// ==============================================
// PART 2 - Introducing Folds
// ==============================================
(*
RecursiveTypesAndFold-2b.fsx
Related blog post: http://fsharpforfunandprofit.com/posts/recursive-types-and-folds-2b/
*)
// ==============================================
// PART 2b - Understanding Folds
// ==============================================
(*
RecursiveTypesAndFold-3.fsx
Related blog post: http://fsharpforfunandprofit.com/posts/recursive-types-and-folds-3/
*)
// ==============================================
// PART 3 - Generic recursive types
// ==============================================
(*
RecursiveTypesAndFold-3b-tree.fsx
Related blog post: http://fsharpforfunandprofit.com/posts/recursive-types-and-folds-3b/
*)
// ==============================================
// PART 3b - Generic tree type
// ==============================================