# FSharpPlus Dual In FSharpPlus, Dual is a monoid that takes another monoid's magma and flips its arguments. Its zero is the zero of the wrapped monoid. The above might be difficult to understand, so just look at the code: ```fsharp type Dual<'monoid> = Dual of 'monoid with static member inline (+) (Dual left, Dual right) = let combined = right ++ left //Instead of left ++ right Dual combined static member inline get_Zero () = let wrappedZero : 'monoid = zero Dual wrappedZero ```