Esempio n. 1
0
        public void EitherFoldBackLeftWhenLeft()
        {
            string state                = "Hello";
            string expected             = "Hello World";
            Either <string, int> either = " World";
            string result               =
                EitherModule.FoldBackLeft(
                    (left, _state) => string.Concat(_state, left),
                    either, state);

            Assert.AreEqual(expected, result);
        }
Esempio n. 2
0
 /// <summary>
 /// Creates a new <typeparamref name="TState"/> value by applying the given <paramref name="folder"/> function
 /// to <see cref="Either{TLeft, TRight}"/> value and <paramref name="state"/> when <paramref name="either"/> <see cref="Either{TLeft, TRight}.IsLeft"/>.
 /// Otherwise, returns the <paramref name="state"/>.
 /// </summary>
 /// <typeparam name="TLeft">The type of the left value.</typeparam>
 /// <typeparam name="TRight">The type of the right value.</typeparam>
 /// <typeparam name="TState">The type of initial and final states</typeparam>
 /// <param name="folder">The function to transform either value from the input <paramref name="either"/> to a new state value.</param>
 /// <param name="state">The initial state.</param>
 /// <param name="either">the input either.</param>
 /// <returns>
 /// Returns a new <typeparamref name="TState"/> value by applying the given <paramref name="folder"/> function
 /// to <see cref="Either{TLeft, TRight}"/> value and <paramref name="state"/> when <paramref name="either"/> <see cref="Either{TLeft, TRight}.IsLeft"/>.
 /// Otherwise, returns the input <paramref name="either"/>.
 /// </returns>
 public static TState FoldBackLeft <TLeft, TRight, TState>(this Either <TLeft, TRight> either, Func <TLeft, TState, TState> folder, TState state)
 => EitherModule.FoldBackLeft(folder, either, state);