diff --git a/LanguageExt.Core/Async/AsyncEnumerable/AsyncEnumberable.Extensions.cs b/LanguageExt.Core/Async/AsyncEnumerable/AsyncEnumberable.Extensions.cs index b30240426..67c9f75a9 100644 --- a/LanguageExt.Core/Async/AsyncEnumerable/AsyncEnumberable.Extensions.cs +++ b/LanguageExt.Core/Async/AsyncEnumerable/AsyncEnumberable.Extensions.cs @@ -1,3 +1,5 @@ +#pragma warning disable LX_StreamT + using System; using System.Collections.Generic; using LanguageExt.Traits; diff --git a/LanguageExt.Core/DataTypes/Range/Range.cs b/LanguageExt.Core/DataTypes/Range/Range.cs index b74dd7a2f..0fdf062b9 100644 --- a/LanguageExt.Core/DataTypes/Range/Range.cs +++ b/LanguageExt.Core/DataTypes/Range/Range.cs @@ -1,4 +1,6 @@ -using LanguageExt.Traits; +#pragma warning disable LX_StreamT + +using LanguageExt.Traits; using System; using System.Collections.Generic; using System.Collections; diff --git a/LanguageExt.Core/Effects/IO/Free/IOMap.cs b/LanguageExt.Core/Effects/IO/Free/IOMap.cs new file mode 100644 index 000000000..ee7729333 --- /dev/null +++ b/LanguageExt.Core/Effects/IO/Free/IOMap.cs @@ -0,0 +1,27 @@ +/* +using System; +using LanguageExt.DSL; +using LanguageExt.Traits; + +namespace LanguageExt; + +record IOMap<A, B>(IO<A> Value, Func<A, B> F) : IO<B> +{ + public override IO<C> Map<C>(Func<B, C> f) => + new IOMap<A, C>(Value, x => f(F(x))); + + public override IO<C> Bind<C>(Func<B, K<IO, C>> f) => + new IOMap<A, K<IO, C>>(Value, x => f(F(x)).As()).Bind(x => x); + + public override IO<C> ApplyBack<C>(K<IO, Func<B, C>> mf) => + mf switch + { + IOPure<Func<B, C>> (var f) => new IOMap<A, C>(Value, x => f(F(x))), + IOPureAsync<Func<B, C>> (var tf) => new IOMap<A, IO<C>>(Value, x => IO.pureAsync(tf.Map(f => f(F(x))))).Bind(x => x), + IOFail<Func<B, C>> (var v) => new IOFail<C>(v), + IOBind<Func<B, C>> (var f) => new IOBind<C>(f.Map(x => x.Apply(this).As())), + IOCatch<Func<B, C>> mc => Value.Bind(a => IO.pure(F(a)).ApplyBack(mc)), + _ => throw new InvalidOperationException() + }; +} +*/ diff --git a/LanguageExt.Core/Effects/IO/IO.Extensions.cs b/LanguageExt.Core/Effects/IO/IO.Extensions.cs index 7911ff679..82d805bb3 100644 --- a/LanguageExt.Core/Effects/IO/IO.Extensions.cs +++ b/LanguageExt.Core/Effects/IO/IO.Extensions.cs @@ -1,3 +1,5 @@ +#pragma warning disable LX_StreamT + using System; using System.Diagnostics.Contracts; using System.Runtime.CompilerServices; diff --git a/LanguageExt.Core/Effects/IO/IO.Module.cs b/LanguageExt.Core/Effects/IO/IO.Module.cs index fc8159662..ca2387942 100644 --- a/LanguageExt.Core/Effects/IO/IO.Module.cs +++ b/LanguageExt.Core/Effects/IO/IO.Module.cs @@ -20,6 +20,15 @@ public partial class IO public static IO<A> pure<A>(A value) => IO<A>.Pure(value); + /// <summary> + /// Lift a pure value into an IO computation + /// </summary> + /// <param name="value">value</param> + /// <typeparam name="A">Bound value type</typeparam> + /// <returns>IO in a success state. Always yields the lifted value.</returns> + internal static IO<A> pureAsync<A>(Task<A> value) => + new IOPureAsync<A>(value); + /// <summary> /// Put the IO into a failure state /// </summary> diff --git a/LanguageExt.Core/Effects/IO/IO.Prelude.cs b/LanguageExt.Core/Effects/IO/IO.Prelude.cs index 223e7dd77..05aa6f285 100644 --- a/LanguageExt.Core/Effects/IO/IO.Prelude.cs +++ b/LanguageExt.Core/Effects/IO/IO.Prelude.cs @@ -1,3 +1,5 @@ +#pragma warning disable LX_StreamT + using System; using System.Diagnostics.Contracts; using System.Runtime.CompilerServices; diff --git a/LanguageExt.Core/Effects/Prelude.cs b/LanguageExt.Core/Effects/Prelude.cs index 68b3b4274..b084603e9 100644 --- a/LanguageExt.Core/Effects/Prelude.cs +++ b/LanguageExt.Core/Effects/Prelude.cs @@ -1,4 +1,6 @@ -using System; +#pragma warning disable LX_StreamT + +using System; using LanguageExt.Traits; namespace LanguageExt; diff --git a/LanguageExt.Core/Effects/Source/Source.cs b/LanguageExt.Core/Effects/Source/Source.cs index 82bbed6ea..fcdadc4f2 100644 --- a/LanguageExt.Core/Effects/Source/Source.cs +++ b/LanguageExt.Core/Effects/Source/Source.cs @@ -1,3 +1,5 @@ +#pragma warning disable LX_StreamT + using System; using System.Collections.Concurrent; using System.Threading; diff --git a/LanguageExt.Core/Effects/Source/Sub.cs b/LanguageExt.Core/Effects/Source/Sub.cs index b704f4de5..fb8e62405 100644 --- a/LanguageExt.Core/Effects/Source/Sub.cs +++ b/LanguageExt.Core/Effects/Source/Sub.cs @@ -1,3 +1,5 @@ +#pragma warning disable LX_StreamT + using System; using System.Collections.Concurrent; using System.Collections.Generic; diff --git a/LanguageExt.Core/Effects/StreamT/StreamT.Extensions.MapApply.cs b/LanguageExt.Core/Effects/StreamT/StreamT.Extensions.MapApply.cs index a2ea85260..55fd27c9c 100644 --- a/LanguageExt.Core/Effects/StreamT/StreamT.Extensions.MapApply.cs +++ b/LanguageExt.Core/Effects/StreamT/StreamT.Extensions.MapApply.cs @@ -1,4 +1,6 @@ -using System; +#pragma warning disable LX_StreamT + +using System; using LanguageExt.Traits; namespace LanguageExt; diff --git a/LanguageExt.Core/Effects/StreamT/StreamT.Extensions.cs b/LanguageExt.Core/Effects/StreamT/StreamT.Extensions.cs index d3d5af0e4..c29fab753 100644 --- a/LanguageExt.Core/Effects/StreamT/StreamT.Extensions.cs +++ b/LanguageExt.Core/Effects/StreamT/StreamT.Extensions.cs @@ -1,3 +1,5 @@ +#pragma warning disable LX_StreamT + using System; using System.Collections.Generic; using System.Linq; diff --git a/LanguageExt.Core/Effects/StreamT/StreamT.Module.cs b/LanguageExt.Core/Effects/StreamT/StreamT.Module.cs index 69015d6b4..200f1688b 100644 --- a/LanguageExt.Core/Effects/StreamT/StreamT.Module.cs +++ b/LanguageExt.Core/Effects/StreamT/StreamT.Module.cs @@ -1,3 +1,5 @@ +#pragma warning disable LX_StreamT + using LanguageExt.Traits; using System.Collections.Generic; diff --git a/LanguageExt.Core/Effects/StreamT/StreamT.Monad.cs b/LanguageExt.Core/Effects/StreamT/StreamT.Monad.cs index dbe950c7b..529753585 100644 --- a/LanguageExt.Core/Effects/StreamT/StreamT.Monad.cs +++ b/LanguageExt.Core/Effects/StreamT/StreamT.Monad.cs @@ -1,3 +1,5 @@ +#pragma warning disable LX_StreamT + using System; using System.Collections.Generic; using LanguageExt.Traits; diff --git a/LanguageExt.Core/Effects/StreamT/StreamT.Prelude.cs b/LanguageExt.Core/Effects/StreamT/StreamT.Prelude.cs index 7cc33c5f4..2230cf9f6 100644 --- a/LanguageExt.Core/Effects/StreamT/StreamT.Prelude.cs +++ b/LanguageExt.Core/Effects/StreamT/StreamT.Prelude.cs @@ -1,3 +1,5 @@ +#pragma warning disable LX_StreamT + using LanguageExt.Traits; namespace LanguageExt; diff --git a/LanguageExt.Core/Effects/StreamT/StreamT.Prelude.mapapply.cs b/LanguageExt.Core/Effects/StreamT/StreamT.Prelude.mapapply.cs index 38dd9fad1..0c73c5439 100644 --- a/LanguageExt.Core/Effects/StreamT/StreamT.Prelude.mapapply.cs +++ b/LanguageExt.Core/Effects/StreamT/StreamT.Prelude.mapapply.cs @@ -1,4 +1,6 @@ -using System; +#pragma warning disable LX_StreamT + +using System; using LanguageExt.Traits; namespace LanguageExt; diff --git a/LanguageExt.Core/Effects/StreamT/StreamT.cs b/LanguageExt.Core/Effects/StreamT/StreamT.cs index 39c91f692..284919fc6 100644 --- a/LanguageExt.Core/Effects/StreamT/StreamT.cs +++ b/LanguageExt.Core/Effects/StreamT/StreamT.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Diagnostics.CodeAnalysis; using System.Threading; using System.Threading.Tasks; using static LanguageExt.Prelude; @@ -11,6 +12,7 @@ namespace LanguageExt; /// <summary> /// Lazy sequence monad transformer /// </summary> +[Experimental("LX_StreamT")] public record StreamT<M, A>(Func<K<M, MList<A>>> runListT) : K<StreamT<M>, A>, Monoid<StreamT<M, A>> diff --git a/LanguageExt.Core/Immutable Collections/Arr/Arr.cs b/LanguageExt.Core/Immutable Collections/Arr/Arr.cs index bf9ba0948..800868aa8 100644 --- a/LanguageExt.Core/Immutable Collections/Arr/Arr.cs +++ b/LanguageExt.Core/Immutable Collections/Arr/Arr.cs @@ -1,4 +1,6 @@ -using System; +#pragma warning disable LX_StreamT + +using System; using System.Linq; using System.Collections; using System.Collections.Generic; diff --git a/LanguageExt.Core/Immutable Collections/Iterable/Iterable.cs b/LanguageExt.Core/Immutable Collections/Iterable/Iterable.cs index 7a1a18858..2cd846404 100644 --- a/LanguageExt.Core/Immutable Collections/Iterable/Iterable.cs +++ b/LanguageExt.Core/Immutable Collections/Iterable/Iterable.cs @@ -1,4 +1,6 @@ -using System; +#pragma warning disable LX_StreamT + +using System; using System.Collections; using System.Collections.Generic; using System.Diagnostics.Contracts; diff --git a/LanguageExt.Core/Immutable Collections/List/Lst.cs b/LanguageExt.Core/Immutable Collections/List/Lst.cs index e54e2bc9c..095ae9d97 100644 --- a/LanguageExt.Core/Immutable Collections/List/Lst.cs +++ b/LanguageExt.Core/Immutable Collections/List/Lst.cs @@ -1,4 +1,6 @@ -using System; +#pragma warning disable LX_StreamT + +using System; using System.Linq; using System.Collections; using System.Collections.Generic; diff --git a/LanguageExt.Core/Immutable Collections/Seq/Seq.cs b/LanguageExt.Core/Immutable Collections/Seq/Seq.cs index 901d1ae3e..02c7e63f8 100644 --- a/LanguageExt.Core/Immutable Collections/Seq/Seq.cs +++ b/LanguageExt.Core/Immutable Collections/Seq/Seq.cs @@ -1,4 +1,6 @@ -#pragma warning disable CS0693 // Type parameter has the same name as the type parameter from outer type +#pragma warning disable LX_StreamT + +#pragma warning disable CS0693 // Type parameter has the same name as the type parameter from outer type using System; using System.Collections; diff --git a/LanguageExt.Core/Immutable Collections/Set/Set.cs b/LanguageExt.Core/Immutable Collections/Set/Set.cs index e0ebde04b..7b0efdfaa 100644 --- a/LanguageExt.Core/Immutable Collections/Set/Set.cs +++ b/LanguageExt.Core/Immutable Collections/Set/Set.cs @@ -1,4 +1,6 @@ -using System; +#pragma warning disable LX_StreamT + +using System; using System.Collections.Generic; using System.Collections; using static LanguageExt.Prelude; diff --git a/LanguageExt.Core/Monads/Alternative Monads/Either/Either.cs b/LanguageExt.Core/Monads/Alternative Monads/Either/Either.cs index c8b7c4dcb..70df2ee54 100644 --- a/LanguageExt.Core/Monads/Alternative Monads/Either/Either.cs +++ b/LanguageExt.Core/Monads/Alternative Monads/Either/Either.cs @@ -1,4 +1,6 @@ -using System; +#pragma warning disable LX_StreamT + +using System; using System.Collections; using System.Collections.Generic; using static LanguageExt.Prelude; diff --git a/LanguageExt.Core/Monads/Alternative Monads/EitherT/EitherT.cs b/LanguageExt.Core/Monads/Alternative Monads/EitherT/EitherT.cs index b8feaec94..3b8ff74d4 100644 --- a/LanguageExt.Core/Monads/Alternative Monads/EitherT/EitherT.cs +++ b/LanguageExt.Core/Monads/Alternative Monads/EitherT/EitherT.cs @@ -1,4 +1,6 @@ -using System; +#pragma warning disable LX_StreamT + +using System; using System.Diagnostics.Contracts; using System.Runtime.CompilerServices; using LanguageExt.Traits; diff --git a/LanguageExt.Core/Monads/Alternative Monads/Fin/Fin.cs b/LanguageExt.Core/Monads/Alternative Monads/Fin/Fin.cs index 8a1d11b73..3b4df9045 100644 --- a/LanguageExt.Core/Monads/Alternative Monads/Fin/Fin.cs +++ b/LanguageExt.Core/Monads/Alternative Monads/Fin/Fin.cs @@ -1,3 +1,5 @@ +#pragma warning disable LX_StreamT + using System; using LanguageExt.Common; using LanguageExt.Traits; diff --git a/LanguageExt.Core/Monads/Alternative Monads/FinT/FinT.cs b/LanguageExt.Core/Monads/Alternative Monads/FinT/FinT.cs index 20d1619b1..8f370180b 100644 --- a/LanguageExt.Core/Monads/Alternative Monads/FinT/FinT.cs +++ b/LanguageExt.Core/Monads/Alternative Monads/FinT/FinT.cs @@ -1,4 +1,6 @@ -using System; +#pragma warning disable LX_StreamT + +using System; using System.Diagnostics.Contracts; using LanguageExt.Common; using LanguageExt.Traits; diff --git a/LanguageExt.Core/Monads/Alternative Monads/Option/Option.cs b/LanguageExt.Core/Monads/Alternative Monads/Option/Option.cs index c6ac029d5..c33b859e0 100644 --- a/LanguageExt.Core/Monads/Alternative Monads/Option/Option.cs +++ b/LanguageExt.Core/Monads/Alternative Monads/Option/Option.cs @@ -1,4 +1,6 @@ -using System; +#pragma warning disable LX_StreamT + +using System; using System.Linq; using System.Collections.Generic; using static LanguageExt.Prelude; diff --git a/LanguageExt.Core/Monads/Alternative Monads/OptionT/OptionT.cs b/LanguageExt.Core/Monads/Alternative Monads/OptionT/OptionT.cs index 18ccd60c1..c882909be 100644 --- a/LanguageExt.Core/Monads/Alternative Monads/OptionT/OptionT.cs +++ b/LanguageExt.Core/Monads/Alternative Monads/OptionT/OptionT.cs @@ -1,4 +1,6 @@ -using System; +#pragma warning disable LX_StreamT + +using System; using System.Diagnostics.Contracts; using System.IO; using System.Runtime.CompilerServices; diff --git a/LanguageExt.Core/Monads/Alternative Monads/Validation/Validation.cs b/LanguageExt.Core/Monads/Alternative Monads/Validation/Validation.cs index e6cee28f5..f92a8e281 100644 --- a/LanguageExt.Core/Monads/Alternative Monads/Validation/Validation.cs +++ b/LanguageExt.Core/Monads/Alternative Monads/Validation/Validation.cs @@ -1,4 +1,6 @@ -using System; +#pragma warning disable LX_StreamT + +using System; using System.Collections.Generic; using static LanguageExt.Prelude; using System.Diagnostics.Contracts; diff --git a/LanguageExt.Core/Monads/Alternative Monads/ValidationT/ValidationT.cs b/LanguageExt.Core/Monads/Alternative Monads/ValidationT/ValidationT.cs index 1148f6026..8522d76f2 100644 --- a/LanguageExt.Core/Monads/Alternative Monads/ValidationT/ValidationT.cs +++ b/LanguageExt.Core/Monads/Alternative Monads/ValidationT/ValidationT.cs @@ -1,4 +1,6 @@ -using System; +#pragma warning disable LX_StreamT + +using System; using System.Diagnostics.Contracts; using System.Runtime.CompilerServices; using LanguageExt.Common; diff --git a/LanguageExt.Tests/TraitTests/ApplicativeLawTests.cs b/LanguageExt.Tests/TraitTests/ApplicativeLawTests.cs index aa902319c..c6611b183 100644 --- a/LanguageExt.Tests/TraitTests/ApplicativeLawTests.cs +++ b/LanguageExt.Tests/TraitTests/ApplicativeLawTests.cs @@ -1,3 +1,5 @@ +#pragma warning disable LX_StreamT + using Xunit; namespace LanguageExt.Tests.TraitTests; diff --git a/LanguageExt.Tests/TraitTests/FunctorLawTests.cs b/LanguageExt.Tests/TraitTests/FunctorLawTests.cs index f661c1f8a..51e59e735 100644 --- a/LanguageExt.Tests/TraitTests/FunctorLawTests.cs +++ b/LanguageExt.Tests/TraitTests/FunctorLawTests.cs @@ -1,3 +1,5 @@ +#pragma warning disable LX_StreamT + using Xunit; using LanguageExt.Common; namespace LanguageExt.Tests.TraitTests; diff --git a/LanguageExt.Tests/TraitTests/MonadLawsTest.cs b/LanguageExt.Tests/TraitTests/MonadLawsTest.cs index 04bf9d8a8..edc3f64ce 100644 --- a/LanguageExt.Tests/TraitTests/MonadLawsTest.cs +++ b/LanguageExt.Tests/TraitTests/MonadLawsTest.cs @@ -1,3 +1,5 @@ +#pragma warning disable LX_StreamT + using Xunit; namespace LanguageExt.Tests.TraitTests; diff --git a/Samples/Streams/CountForever.cs b/Samples/Streams/CountForever.cs index cbd11bd67..2468499f7 100644 --- a/Samples/Streams/CountForever.cs +++ b/Samples/Streams/CountForever.cs @@ -1,3 +1,5 @@ +#pragma warning disable LX_StreamT + using LanguageExt; using static LanguageExt.Prelude; using static Streams.Console; diff --git a/Samples/Streams/CountForeverAsync.cs b/Samples/Streams/CountForeverAsync.cs index 26724c06e..05b895d1e 100644 --- a/Samples/Streams/CountForeverAsync.cs +++ b/Samples/Streams/CountForeverAsync.cs @@ -1,3 +1,5 @@ +#pragma warning disable LX_StreamT + using LanguageExt; using static LanguageExt.Prelude; using static Streams.Console; diff --git a/Samples/Streams/Folding.cs b/Samples/Streams/Folding.cs index f43d08e72..d8abe06b8 100644 --- a/Samples/Streams/Folding.cs +++ b/Samples/Streams/Folding.cs @@ -1,3 +1,5 @@ +#pragma warning disable LX_StreamT + using LanguageExt; using static Streams.Console; using static LanguageExt.Prelude; diff --git a/Samples/Streams/Grouping.cs b/Samples/Streams/Grouping.cs index 3e7c37cba..146771d3b 100644 --- a/Samples/Streams/Grouping.cs +++ b/Samples/Streams/Grouping.cs @@ -1,3 +1,5 @@ +#pragma warning disable LX_StreamT + using LanguageExt; using static LanguageExt.Prelude; using static Streams.Console; diff --git a/Samples/Streams/HeadsAndTails.cs b/Samples/Streams/HeadsAndTails.cs index dfa633982..9632b2f62 100644 --- a/Samples/Streams/HeadsAndTails.cs +++ b/Samples/Streams/HeadsAndTails.cs @@ -1,3 +1,5 @@ +#pragma warning disable LX_StreamT + using LanguageExt; using static LanguageExt.Prelude; using static Streams.Console; diff --git a/Samples/Streams/Merging.cs b/Samples/Streams/Merging.cs index 065828999..faf3d6b67 100644 --- a/Samples/Streams/Merging.cs +++ b/Samples/Streams/Merging.cs @@ -1,3 +1,5 @@ +#pragma warning disable LX_StreamT + using LanguageExt; using static Streams.Console; using static LanguageExt.Prelude; diff --git a/Samples/Streams/OptionalItems.cs b/Samples/Streams/OptionalItems.cs index 2e227fb2e..0dd40e5ad 100644 --- a/Samples/Streams/OptionalItems.cs +++ b/Samples/Streams/OptionalItems.cs @@ -1,3 +1,5 @@ +#pragma warning disable LX_StreamT + using LanguageExt; using static LanguageExt.Prelude; diff --git a/Samples/Streams/SourceStream.cs b/Samples/Streams/SourceStream.cs index 93fe0f732..a6a5e555e 100644 --- a/Samples/Streams/SourceStream.cs +++ b/Samples/Streams/SourceStream.cs @@ -1,3 +1,5 @@ +#pragma warning disable LX_StreamT + using LanguageExt; using LanguageExt.Common; using static Streams.Console; diff --git a/Samples/Streams/SumOfSquares.cs b/Samples/Streams/SumOfSquares.cs index c7195740d..71ec13bec 100644 --- a/Samples/Streams/SumOfSquares.cs +++ b/Samples/Streams/SumOfSquares.cs @@ -1,3 +1,5 @@ +#pragma warning disable LX_StreamT + using LanguageExt; using LanguageExt.Common; using LanguageExt.Traits; diff --git a/Samples/Streams/Zipping.cs b/Samples/Streams/Zipping.cs index e4539125f..586890875 100644 --- a/Samples/Streams/Zipping.cs +++ b/Samples/Streams/Zipping.cs @@ -1,3 +1,5 @@ +#pragma warning disable LX_StreamT + using LanguageExt; using static Streams.Console; using static LanguageExt.Prelude;