He estado agregando algunos métodos útiles a algunos de los módulos F # como List.Extendiendo el Módulo de lista F #
type Microsoft.FSharp.Collections.FSharpList<'a> with //'
static member iterWhile (f:'a -> bool) (ls:'a list) =
let rec iterLoop f ls =
match ls with
| head :: tail -> if f head then iterLoop f tail
| _ ->()
iterLoop f ls
y me pregunto si es posible agregar la mutación? Sé que la Lista es inmutable, entonces, ¿qué le parece agregar un método mutable a Ref de tipo Lista? Algo como esto.
type Ref<'a when 'a :> Microsoft.FSharp.Collections.FSharpList<'a> > with //'
member this.AppendMutate element =
this := element :: !this
o hay alguna manera de restringir un genérico para aceptar solo un mutable?