On the surface there seems to be a bit over overlap between FSharpPlus and FSharpx.Extras, but I can't find any documentation or comments on this anywhere. What is the relationship between the two libraries? Are they as similar as they may seem at first glance?
Part of it is different focus. FSharpx.Extras implements things differently and with a different style of f#. The lens definition for instance.
I've used FSharpx.Extras to help with interop with f# from c# for instance.
Back in time, when FSharpX was created I worked in a PR which was never merged.
So we decided to create a separate library and see how it goes.
Nowadays FSharpX was split in different pieces.
Actually now FSharpX Collections could be very easily integrated with FSharpPlus, without even adding a dependency. You just need to add the required methods and you can hide them from the tooling as @wallymathieu did with https://github.com/fsprojects/FSharpPlus/commits/master/src/FSharpPlus/DList.fs
Thanks for the clarifications. Are you saying that feature-wise there's a significant overlap, but implementation- and usage-wise it's different? Or are there significant differences in features, too?
(The question is made a bit harder by the fact that FSharpx seem to have no documentation outside of API reference.)
Well there are also some conceptual differences.
This library tries to keep the scope as "an extension of FSharp.Core" whereas FSharpX seems to have passed beyond that limit long time ago.
Nowadays it feels like many people was dropping stuff there and it's a big repository of common code for different purposes.
Documentation is a top priority here, we worked a lot with the different samples and we still need more stuff in some areas.
Once you know how it works it becomes very handy, I almost start every single script by linking it :)
Compare monoid in fsharp x : https://github.com/fsprojects/FSharpx.Extras/blob/master/src/FSharpx.Extras/Monoid.fs with how similar abstractions are implemented in f#+
@cmeeren what are your thoughts? Have you gotten an impression of what the differences are?
Perhaps FSharpX could do with some clean up?
I haven't tried FSharpPlus or FSharpX yet. I have a fairly good idea of how I want to use FSharpPlus, but the Intellisense performance impact means I have to experiment a bit to see if it's worth it. It's on my todo-list, though very low as I'm busy with other higher-priority programming tasks. As for FSharpX, I currently have no concrete plans of trying it.
Since there is not anything new here, perhaps time to close the issue.
I haven't tried FSharpPlus or FSharpX yet. I have a fairly good idea of how I want to use FSharpPlus, but the Intellisense performance impact means I have to experiment a bit to see if it's worth it. It's on my todo-list, though very low as I'm busy with other higher-priority programming tasks. As for FSharpX, I currently have no concrete plans of trying it.
so after 2+ years can u please share ur experience ?
I have used FSharpPlus for maybe a year now, and I can't really imagine going back. For me it's a core part of F# now. Very happy with it. Intellisense performance is fine as long as you don't define too many "ultra-generic" functions yourself.
Most helpful comment
I have used FSharpPlus for maybe a year now, and I can't really imagine going back. For me it's a core part of F# now. Very happy with it. Intellisense performance is fine as long as you don't define too many "ultra-generic" functions yourself.