From c2db60e273e6312ecaf2d74188faf8375e57b354 Mon Sep 17 00:00:00 2001 From: Oskar Gewalli Date: Tue, 23 Feb 2021 18:28:32 +0100 Subject: [PATCH 1/3] Revert "-BindReturn" This reverts commit 78d883574ef40233605f1c178dd5efd5efaba80e. --- src/FSharpPlus/Builders.fs | 1 + tests/FSharpPlus.Tests/General.fs | 3 ++- tests/FSharpPlusFable.Tests/FSharpTests/General.fs | 2 +- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/FSharpPlus/Builders.fs b/src/FSharpPlus/Builders.fs index 9ea3c7ef2..66b1335ea 100644 --- a/src/FSharpPlus/Builders.fs +++ b/src/FSharpPlus/Builders.fs @@ -45,6 +45,7 @@ module GenericBuilders = member inline __.Yield (x: 'T) = result x : '``Monad<'T>`` member inline __.Bind (p: '``Monad<'T>``, rest: 'T->'``Monad<'U>``) = p >>= rest : '``Monad<'U>`` member inline __.MergeSources (t1: '``Monad<'T>``, t2: '``Monad<'U>``) : '``Monad<'T * 'U>`` = Lift2.Invoke tuple2 t1 t2 + member inline __.BindReturn (x : '``Monad<'T>``, f: 'T -> 'U) : '``Monad<'U>`` = Map.Invoke f x [] member inline __.Select (x, [] f) = map f x diff --git a/tests/FSharpPlus.Tests/General.fs b/tests/FSharpPlus.Tests/General.fs index 81f2df4a9..4374739c4 100644 --- a/tests/FSharpPlus.Tests/General.fs +++ b/tests/FSharpPlus.Tests/General.fs @@ -1819,7 +1819,7 @@ module MonadTransformers = let _ = put initialState : ChoiceT>> () - +#if APPLICATIVE_FIX [] let testStateT () = let lst1: StateT = StateT.lift [1;2] @@ -1854,6 +1854,7 @@ module MonadTransformers = areEqual (Ok 11) x let y = (fn |> ResultT.run |> Reader.run) -1 areEqual (Error NegativeValue) y +#endif module ProfunctorDefaults = type Fun<'T,'U> = Fun of ('T -> 'U) with diff --git a/tests/FSharpPlusFable.Tests/FSharpTests/General.fs b/tests/FSharpPlusFable.Tests/FSharpTests/General.fs index b820bfddf..8f58a51a8 100644 --- a/tests/FSharpPlusFable.Tests/FSharpTests/General.fs +++ b/tests/FSharpPlusFable.Tests/FSharpTests/General.fs @@ -122,7 +122,7 @@ let monadTransformers = testList "MonadTransformers" [ let _ = put initialState : ChoiceT>> ()) - #if !NETSTANDARD3_0 + #if APPLICATIVE_FIX testCase "testStateT" (fun () -> let lst1: StateT = StateT.lift [1;2] let lst2: StateT = StateT.lift [4;5] From b7d8d3d97679a99a9a6f1fbf34438fa15c7599bc Mon Sep 17 00:00:00 2001 From: Oskar Gewalli Date: Tue, 23 Feb 2021 21:19:30 +0100 Subject: [PATCH 2/3] +#if APPLICATIVE_FIX --- docsrc/content/type-reader.fsx | 3 ++- src/FSharpPlus.Docs/Samples/Learn You a Haskell.fsx | 7 +++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/docsrc/content/type-reader.fsx b/docsrc/content/type-reader.fsx index dc98a1245..e5bc313c2 100644 --- a/docsrc/content/type-reader.fsx +++ b/docsrc/content/type-reader.fsx @@ -104,7 +104,7 @@ let lookupTemplate (name:string) (env:Environment) : Template option = tryItem n /// add a list of resolved definitions to the environment let addDefs (defs:(string*string) list) env = { env with variables = plus (Map.ofList defs) env.variables} - +#if APPLICATIVE_FIX /// resolve a template into a string let rec resolve : Template -> Reader = function | T s -> result s @@ -141,3 +141,4 @@ and let! value = resolve d return (name,value) } +#endif diff --git a/src/FSharpPlus.Docs/Samples/Learn You a Haskell.fsx b/src/FSharpPlus.Docs/Samples/Learn You a Haskell.fsx index e06cf388c..d9358048d 100644 --- a/src/FSharpPlus.Docs/Samples/Learn You a Haskell.fsx +++ b/src/FSharpPlus.Docs/Samples/Learn You a Haskell.fsx @@ -258,7 +258,7 @@ let res70 = applyLog (3, "Smallish gang.") isBigGang // let res71: Writer, unit> = tell ["Something gonna happend"] // Writer (None, ["Something gonna happend"]) let logNumber (x:int) = Writer (x, ["Got number: " + (x |> string)]) - +#if APPLICATIVE_FIX let multWithLog = // Writer (15, ["Got number: 3"; "Got number: 5"; "Gonna multiply these two"]) monad { let! a = logNumber 3 @@ -285,7 +285,7 @@ let rec gcd' a b : Writer, int> = } let res72 = gcd' 8 3 // Writer (1, ["8 mod 3 = 2"; "3 mod 2 = 1"; "2 mod 1 = 0"; "Finished with 1"]) - +#endif (* -------------------------------------------------- Reader monad @@ -421,6 +421,8 @@ let inline filterM (f : 'a -> 'Monad'Bool) (xs : List<'a>) : 'Monad'List'a = } loopM f xs +#if APPLICATIVE_FIX + // keepSmall :: Int -> Writer [String] Bool let keepSmall x : Writer, bool> = monad { @@ -441,6 +443,7 @@ let res96 = keepSmall 3 let res97 = filterM keepSmall [9;1;5;2;10;3] // Writer ([1; 2; 3], ["9 is too large, throwing it away"; "Keeping 1"; "5 is too large, throwing it away"; "Keeping 2"; "10 is too large, throwing it away"; "Keeping 3"]) let res98 = filterM keepSmallSome [1;2;3] // Some [1; 2; 3] let res99 = filterM keepSmallSome [9;1;5;2;10;3] // None +#endif // foldM :: (Monad m) => (a -> b -> m a) -> a -> [b] -> m a // foldM _ a [] = return a From 2f6b975561fa9d34cafc7ab59ac0ad28c9dd8080 Mon Sep 17 00:00:00 2001 From: Oskar Gewalli Date: Thu, 23 Feb 2023 05:51:47 +0200 Subject: [PATCH 3/3] +APPLICATIVE_FIX --- src/FSharpPlus.Docs/FSharpPlus.Docs.fsproj | 1 + tests/FSharpPlus.Tests/FSharpPlus.Tests.fsproj | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/FSharpPlus.Docs/FSharpPlus.Docs.fsproj b/src/FSharpPlus.Docs/FSharpPlus.Docs.fsproj index f25f1af8f..f5aefdaee 100644 --- a/src/FSharpPlus.Docs/FSharpPlus.Docs.fsproj +++ b/src/FSharpPlus.Docs/FSharpPlus.Docs.fsproj @@ -9,6 +9,7 @@ Debug;Release;Fable AnyCPU net7.0 + $(DefineConstants);APPLICATIVE_FIX diff --git a/tests/FSharpPlus.Tests/FSharpPlus.Tests.fsproj b/tests/FSharpPlus.Tests/FSharpPlus.Tests.fsproj index 46ee59d92..0d0aeecd3 100644 --- a/tests/FSharpPlus.Tests/FSharpPlus.Tests.fsproj +++ b/tests/FSharpPlus.Tests/FSharpPlus.Tests.fsproj @@ -10,7 +10,7 @@ false Debug;Release;Fable AnyCPU - $(DefineConstants);FABLE_COMPILER + $(DefineConstants);FABLE_COMPILER;APPLICATIVE_FIX net7.0