Я добавил несколько удобных методов для некоторых модулей F #, таких как List.
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
и мне интересно, возможно ли добавить мутацию? Я знаю, что List является неизменным, так как насчет добавления изменяемого метода в Ref типа List. Как то так.
type Ref<'a when 'a :> Microsoft.FSharp.Collections.FSharpList<'a> > with //'
member this.AppendMutate element =
this := element :: !this
или есть какой-то способ ограничить универсальный тип только для принятия изменяемого?