Używacie language-ext?

0

Używacie biblioteki language-ext? A jeśli nie, to czy chcielibyście poużywać? ;) Wygląda jak Vavr przeniesiony na .NET. Ciekaw jestem, co sądzi @jarekr000000.

3

Nie znam środowiska i bibliotek C# na tyle, żeby powiedzieć jak to pasuje do reszty.
To ma praktycznie wszystko z VAVR i vavr wywrócił jave do góry nogami.
Ale ma też dużo więcej - przypomina bardziej arrow-kt z kotlina - lub biedną wersję scalaz.
To ma takie znaczenie, że może okazać sie za dużo na głowę przeciętnego korpoklepacza. To straszne, ale VAVR się przyjął między innymi dlatego, że był trochę biedny i nie było czego się bać. StateMonad, newtype czyli jakis biedny ad-hoc polimorfizm mogą wystraszyć.
Z nazw typu TryOptionAsync zieje biedą (ale to niestety ograniczenia języka , w javie takie same się tworzy - tylko nie ma w standardzie vavr).

1

Nie używam, może kiedyś będę.
Problem z tym taki, że to jest znacznie odmienne niż "typowy" kod w C# i trzeba sporo czasu poświęcić, aby móc efektywnie korzystać. Dla wielu może to być bariera nie do przekroczenia, jak @jarekr000000 wspomniał.

Ale dużym plusem jest pierwsze sensowne zastosowanie using static w historii.

0

Wybrałem losowy fragment i zapytam

What's the point?

Jakoś wolę odnosić się do kolekcji i nestować sobie via fluent API niż przekazywać jako param. Nie żeby przy tym drugim się nie dało, ale 1 opcja jest dla mnie przejrzystsza.

// Generates 10,20,30,40,50
var input = List(1, 2, 3, 4, 5);
var output1 = map(input, x => x * 10);

// Generates 30,40,50
var output2 = filter(output1, x => x > 20);

// Generates 120
var output3 = fold(output2, 0, (x, s) => s + x);
var input = new List<int>{1, 2, 3, 4, 5};

var output1 = input.Select(x => x * 10);

var output2 = output1.Where(x => x > 20);

var output3 = output2.Aggregate((x,y) => x + y);

Na co powinienem patrzeć?

Tutaj fajny "problem" chcą rozwiązać, ale nie lepiej i czytelniej załatwić to operatorem ternary?

int res = match(parseInt("123"),
                     Some: x => x * 2,
                     None: () => 0 );

w stylu:

int res = Int32.TryParse(x, out int p) ? p*p : 0; (bez deklarowania int p przed linijką z outem chyba od c# 8)
0

Z nazw typu TryOptionAsync zieje biedą (ale to niestety ograniczenia języka , w javie takie same się tworzy - tylko nie ma w standardzie vavr).

Jakbym zobaczył takie coś w bibliotece Javovej to bym tego już nie używał ;) Ta nazwa nic nie mówi sensownego o tej klasie czy interfejsie. Rzeczywiście zaleta VAVRa jest jego prostota ;)

1 użytkowników online, w tym zalogowanych: 0, gości: 1