3 ms·
I've written a LINQ style library for TypeScript that allows you to write something like this: from([1,2,3]).select(n => n * n).where(n >=2).toArray() which
by wingspan 14y ago
I've written a LINQ style library for TypeScript that allows you to write something like this:
from([1,2,3]).select(n => n * n).where(n >=2).toArray()
which outputs
[4, 9]
Hoping to open source it soon.
Edit: typo, n * 2 should have been n * n, sorry for the confusion
- Kafka 14y agoCould you please explain why it would output that?
- wingspan 14y agoTypo, updated. Should have been n * n
- spicyj 14y agoHave you used the popular library Underscore.js http://underscorejs.org/ http://underscorejs.org/? The equivalent to your code in Underscore would be: _.chain([1,2,3]).map(n => n * n).filter(n => n >= 2).value()
- wingspan 14y agoI did look at underscore when figuring out how to design the library, along with many JS LINQ variants (http://ianobermiller.com/blog/2012/09/19/linq-for-javascript/ http://ianobermiller.com/blog/2012/09/19/linq-for-javascript...). It should be pretty straightforward to provide Underscore bindings for TypeScript. One big difference in the library I was working on is that it is lazy, and modeled after .NETs IEnumerable. Whether this is a good thing or not, I'm not yet sure.
- sciolistse 14y agoI've made a lazy linq-like library for javascript in the past.. The problem i had was that the native array methods are rather fast while function calls (for moveNext) are quite slow, so i couldn't get a whole lot of speed out of it. Newer javascript engines might be sufficient to offset that though.
- wingspan 14y agoI tried to get around this by creating overloads of almost all methods when you are operating on an array. `each` for instance, has a standard implementation using moveNext, and then an array implementation using a fast for loop. In some cases you could even drop down to native function calls.
- sciolistse 14y agoSounds reasonable. Could be better timing now as well, what with server-side javascript having become popular. Good luck with the library!
- colin_jack 14y agoAs a .NET and JS developer underscore is definitely the secret sauce that means I don't miss linq at all. Lovely lovely little library.
- murki 14y agoWouldn't it output [4, 6]?
- wingspan 14y agoAh yeah, typo, updated.