From e6dc6097f9314a65c543dfadd3217b0456e315ca Mon Sep 17 00:00:00 2001 From: Matei Adriel Date: Sun, 15 Dec 2019 15:20:20 +0200 Subject: [PATCH] fsharp(ygosim): feat: added a helper to create a lens from an array index Signed-off-by: prescientmoon --- fsharp/ygosim/src/Utils.fs | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/fsharp/ygosim/src/Utils.fs b/fsharp/ygosim/src/Utils.fs index f241924..dbf2036 100644 --- a/fsharp/ygosim/src/Utils.fs +++ b/fsharp/ygosim/src/Utils.fs @@ -1,7 +1,15 @@ module Utils module List = - let setIndex index value list = - List.mapi (fun previous i -> + let setIndex index value = + List.mapi (fun i previous -> if i = index then value else previous) + + + let (.->) = setIndex + +module Lens = + open FSharpPlus.Lens + + let inline indexToLens index f (array: list<'a>) = f array.[index] <&> fun v -> List.setIndex index v array