Some general talk and kinda a "promotion" of my new (and very first) LINQ extension package
Don't know if it's okay to "promote" my own package, but it's on NuGet, has LINQPad samples, and is Apache licensed, so, maybe it's okay to talk about it here?
Well, let's get the package name out first. It's called YARLE which stands for Yet Another Random Linq Extension because I can't come up with a less silly name. It's on NuGet and it contains LINQPad samples.
I coded the extension mainly just, well, realizing my dream of what I want LINQ to do. Most functions are not that powerful, for example, there's a ForEach() function that, well, it's just a fancy way of writing "for each" statement and really not very useful considering there's Select(). But other functions can be quite useful, or powerful, for example, there's a function to convert 2D arrays into jagged arrays, and there's an InfiniteList() function that, well, it basically just generates a list that goes on forever.
It's just, I really wanted these features in LINQ before, but instead of waiting for it to come out, I finally made the decision to implement them myself. At least C# is powerful enough to allow me to do these without too much effort.
But why I'm talking about it here? Besides promotion purpose (which doesn't sound that good I guess? XD), well, after coding the package, I decided that, I want to use it in LINQPad, but I don't have a pro license. Well, I'd just make some samples for LINQPad, as that's a very good thing to do, right? And I just did so. During the sample making, it turned out that there're some severe bugs in my code. So I went fixing those bugs and finally got everything working.
Therefore, turns out that, LINQPad is a good tool to debug this kind of "algorithm pack" even if I only have the free version. Didn't expected that. I guess LINQPad would become my most favourite calculator then XD
And after implementing YARLE, it becomes quite a powerful calculator for dealing with number lists. It's just, being able to just type something like this:
To get the first 60 elements of the Fibonacci list, is nothing but magical. Sure, I can do the same thing in F#, but, it's not in one single line, and I can only get individual elements rather than a list. Being able to code exactly like math formulas when describing a list is, well, making me very happy as I'm a math student, at least. Let's be honest, who doesn't want a calculator that, you just type in the math formula and the answer is out, rather than having to figure out all the programming language details?
And that's it. Don't know if I'm reinventing the wheel, but at least I got some fun doing this small project. And hopefully this post isn't too annoying XD And... (kinda want to act like a young kid here) maybe consider giving my package a try?
Well, let's get the package name out first. It's called YARLE which stands for Yet Another Random Linq Extension because I can't come up with a less silly name. It's on NuGet and it contains LINQPad samples.
I coded the extension mainly just, well, realizing my dream of what I want LINQ to do. Most functions are not that powerful, for example, there's a ForEach() function that, well, it's just a fancy way of writing "for each" statement and really not very useful considering there's Select(). But other functions can be quite useful, or powerful, for example, there's a function to convert 2D arrays into jagged arrays, and there's an InfiniteList() function that, well, it basically just generates a list that goes on forever.
It's just, I really wanted these features in LINQ before, but instead of waiting for it to come out, I finally made the decision to implement them myself. At least C# is powerful enough to allow me to do these without too much effort.
But why I'm talking about it here? Besides promotion purpose (which doesn't sound that good I guess? XD), well, after coding the package, I decided that, I want to use it in LINQPad, but I don't have a pro license. Well, I'd just make some samples for LINQPad, as that's a very good thing to do, right? And I just did so. During the sample making, it turned out that there're some severe bugs in my code. So I went fixing those bugs and finally got everything working.
Therefore, turns out that, LINQPad is a good tool to debug this kind of "algorithm pack" even if I only have the free version. Didn't expected that. I guess LINQPad would become my most favourite calculator then XD
And after implementing YARLE, it becomes quite a powerful calculator for dealing with number lists. It's just, being able to just type something like this:
Yarle.InfiniteList((x1,x2)=>x1+x2,1UL,1UL).Take(60).Dump();
To get the first 60 elements of the Fibonacci list, is nothing but magical. Sure, I can do the same thing in F#, but, it's not in one single line, and I can only get individual elements rather than a list. Being able to code exactly like math formulas when describing a list is, well, making me very happy as I'm a math student, at least. Let's be honest, who doesn't want a calculator that, you just type in the math formula and the answer is out, rather than having to figure out all the programming language details?
And that's it. Don't know if I'm reinventing the wheel, but at least I got some fun doing this small project. And hopefully this post isn't too annoying XD And... (kinda want to act like a young kid here) maybe consider giving my package a try?
Comments
https://github.com/morelinq/MoreLINQ
https://github.com/scottksmith95/LINQKit
Yarle.Cardinal(1,10).ForEach(something);
rather than
for(var i=1;i<=10;i++) something(x);
The code really isn't that much shorter, if any at all. But personally I feel like my way being a bit clearer, and more LINQ-y. Is it really necessary? Even I would doubt it actually.
By the way, the idea of this package comes when I find myself more willing to use something like
new int[Length].Select(x=>DoSomething()).ToArray()
rather than a for-statement to, for example, initialize an array. It might not be more efficient but looks neater to me.