# The Free Monad in FSharpPlus The [[Free Monad]] is implemented in FSharpPlus by ```fsharp type Free<'``functor<'t>``,'t> = Pure of 't | Roll of obj ``` `liftF` can be used to lift a functor into `Free`. Think of this as an automated free monad recipe. Use it to automate writing `Program` types. For sample see ![[Crypto with FSharp (free monad exercise).dib]] In the FSharpPlus world `Free` is a monad, functor and applicative functor.