Re: [go-nuts] [ANN] Koazee a library inspired by functional programming and lazy evaluation that takes the hassle out of working with arrays

2018-12-03 Thread Iván Corrales Solera
I just created a new thread in which I've published a benchmark comparison 
of Koazee with Go-Funk and Go-Linq

https://groups.google.com/forum/#!topic/golang-nuts/BfGPIzNsxsM

The article can be found 
here: 
https://medium.com/@ivan.corrales.solera/koazee-vs-go-funk-vs-go-linq-caf8ef18584e

I hope this can be useful

Tahnks!

>
>>>

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


Re: [go-nuts] [ANN] Koazee a library inspired by functional programming and lazy evaluation that takes the hassle out of working with arrays

2018-12-03 Thread Iván Corrales Solera
I fully understand and completely agree with you... It's hard but I will
try to  do it,

Thanks again for advice

On Mon, Dec 3, 2018 at 3:21 PM Marko Ristin-Kaufmann 
wrote:

> Hi Iván,
> Thanks for taking the time to make the benchmarks!
>
> However, it only makes sense to compare your framework against the other
> frameworks running in the same setting (same machine, same OS *etc.*),
> hence your current benchmarks tell us very little. IMO, your best bet to
> popularize your framework, as you are the last newcomer to "join the
> party", is to actually compare it against other similar frameworks.
>
> Cheers,
> Marko
>
> On Sun, 2 Dec 2018 at 15:10, Iván Corrales Solera <
> ivan.corrales.sol...@gmail.com> wrote:
>
>> Hey Marko,
>>
>> I already have benchmark for Koazee... Many changes have been done in
>> code in order to improve the performance (At the  moment being focused on
>> improve performance for primitive types). Make comparison  with other
>> frameworks is complicated to me but I invite the owners of other similar
>> tools to run the re-use my tests!
>>
>> Benchmark report can be found here:
>> https://github.com/wesovilabs/koazee/wiki/Benchmark-Report
>>
>>
>>
>>
>>
>>
>>
>>
>> On Monday, November 12, 2018 at 8:59:20 AM UTC+1, Marko Ristin wrote:
>>>
>>> Hi Ivan,
>>> Any performance comparisons with other approaches would be greatly
>>> appreciated and I assume they would also help the adoption a lot.
>>>
>>> Cheers Marko
>>>
>>> Le lun. 12 nov. 2018 à 08:20, Iván Corrales Solera <
>>> ivan.corra...@gmail.com> a écrit :
>>>
 Hey Marko,

 Thanks you so much for your reply!,


 To be honest I didn't know about this libraries, but after having a
 quick look at them I see that

 The set of provided operations in https://github.com/clementauger/st
 
  is
 more reduced (but I assume it will be increased), and in the case of
 https://github.com/ahmetb/go-linq
 
  I
 should take time to having a look and find the difference,  because like
 Koazee both are based on Lazy evaluation, so the provided functionality is
 similar.

 As a strong point of koazee I would say the documentation,
 http://wesovilabs.com/koazee/ and that Koazee is only 1 week from I
 started to code it, then there are  and much more possibilities are
 supported,

 In fact,An hour ago,  I just created some issues which will provide
 extra functionality not provided by  https://github.com/ahmetb/go-linq
 
 for example this one

 https://github.com/wesovilabs/koazee/issues/2

 In fact any new issues or suggestion will be great!

 Thank you so much again


 On Monday, November 12, 2018 at 8:01:28 AM UTC+1, Marko Ristin wrote:
>
> Hi!
> Could you give a comparison to other similar libraries such as
> https://github.com/clementauger/st
> https://github.com/ahmetb/go-linq
> ?
>
> Cheers Marko
>
 --
 You received this message because you are subscribed to the Google
 Groups "golang-nuts" group.
 To unsubscribe from this group and stop receiving emails from it, send
 an email to golang-nuts...@googlegroups.com.
 For more options, visit https://groups.google.com/d/optout.

>>> --
>> You received this message because you are subscribed to the Google Groups
>> "golang-nuts" group.
>> To unsubscribe from this group and stop receiving emails from it, send an
>> email to golang-nuts+unsubscr...@googlegroups.com.
>> For more options, visit https://groups.google.com/d/optout.
>>
>

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


Re: [go-nuts] [ANN] Koazee a library inspired by functional programming and lazy evaluation that takes the hassle out of working with arrays

2018-12-03 Thread Marko Ristin-Kaufmann
Hi Iván,
Thanks for taking the time to make the benchmarks!

However, it only makes sense to compare your framework against the other
frameworks running in the same setting (same machine, same OS *etc.*),
hence your current benchmarks tell us very little. IMO, your best bet to
popularize your framework, as you are the last newcomer to "join the
party", is to actually compare it against other similar frameworks.

Cheers,
Marko

On Sun, 2 Dec 2018 at 15:10, Iván Corrales Solera <
ivan.corrales.sol...@gmail.com> wrote:

> Hey Marko,
>
> I already have benchmark for Koazee... Many changes have been done in code
> in order to improve the performance (At the  moment being focused on
> improve performance for primitive types). Make comparison  with other
> frameworks is complicated to me but I invite the owners of other similar
> tools to run the re-use my tests!
>
> Benchmark report can be found here:
> https://github.com/wesovilabs/koazee/wiki/Benchmark-Report
>
>
>
>
>
>
>
>
> On Monday, November 12, 2018 at 8:59:20 AM UTC+1, Marko Ristin wrote:
>>
>> Hi Ivan,
>> Any performance comparisons with other approaches would be greatly
>> appreciated and I assume they would also help the adoption a lot.
>>
>> Cheers Marko
>>
>> Le lun. 12 nov. 2018 à 08:20, Iván Corrales Solera <
>> ivan.corra...@gmail.com> a écrit :
>>
>>> Hey Marko,
>>>
>>> Thanks you so much for your reply!,
>>>
>>>
>>> To be honest I didn't know about this libraries, but after having a
>>> quick look at them I see that
>>>
>>> The set of provided operations in https://github.com/clementauger/st
>>> 
>>>  is
>>> more reduced (but I assume it will be increased), and in the case of
>>> https://github.com/ahmetb/go-linq
>>> 
>>>  I
>>> should take time to having a look and find the difference,  because like
>>> Koazee both are based on Lazy evaluation, so the provided functionality is
>>> similar.
>>>
>>> As a strong point of koazee I would say the documentation,
>>> http://wesovilabs.com/koazee/ and that Koazee is only 1 week from I
>>> started to code it, then there are  and much more possibilities are
>>> supported,
>>>
>>> In fact,An hour ago,  I just created some issues which will provide
>>> extra functionality not provided by  https://github.com/ahmetb/go-linq
>>> 
>>> for example this one
>>>
>>> https://github.com/wesovilabs/koazee/issues/2
>>>
>>> In fact any new issues or suggestion will be great!
>>>
>>> Thank you so much again
>>>
>>>
>>> On Monday, November 12, 2018 at 8:01:28 AM UTC+1, Marko Ristin wrote:

 Hi!
 Could you give a comparison to other similar libraries such as
 https://github.com/clementauger/st
 https://github.com/ahmetb/go-linq
 ?

 Cheers Marko

>>> --
>>> You received this message because you are subscribed to the Google
>>> Groups "golang-nuts" group.
>>> To unsubscribe from this group and stop receiving emails from it, send
>>> an email to golang-nuts...@googlegroups.com.
>>> For more options, visit https://groups.google.com/d/optout.
>>>
>> --
> You received this message because you are subscribed to the Google Groups
> "golang-nuts" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to golang-nuts+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.
>

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


Re: [go-nuts] [ANN] Koazee a library inspired by functional programming and lazy evaluation that takes the hassle out of working with arrays

2018-12-02 Thread Iván Corrales Solera
Hey Marko,

I already have benchmark for Koazee... Many changes have been done in code 
in order to improve the performance (At the  moment being focused on 
improve performance for primitive types). Make comparison  with other 
frameworks is complicated to me but I invite the owners of other similar 
tools to run the re-use my tests!

Benchmark report can be found here: 
https://github.com/wesovilabs/koazee/wiki/Benchmark-Report








On Monday, November 12, 2018 at 8:59:20 AM UTC+1, Marko Ristin wrote:
>
> Hi Ivan,
> Any performance comparisons with other approaches would be greatly 
> appreciated and I assume they would also help the adoption a lot.
>
> Cheers Marko 
>
> Le lun. 12 nov. 2018 à 08:20, Iván Corrales Solera <
> ivan.corra...@gmail.com > a écrit :
>
>> Hey Marko,
>>
>> Thanks you so much for your reply!,
>>
>>
>> To be honest I didn't know about this libraries, but after having a quick 
>> look at them I see that
>>
>> The set of provided operations in https://github.com/clementauger/st 
>> 
>>  is 
>> more reduced (but I assume it will be increased), and in the case of  
>> https://github.com/ahmetb/go-linq 
>> 
>>  I 
>> should take time to having a look and find the difference,  because like 
>> Koazee both are based on Lazy evaluation, so the provided functionality is 
>> similar. 
>>
>> As a strong point of koazee I would say the documentation, 
>> http://wesovilabs.com/koazee/ and that Koazee is only 1 week from I 
>> started to code it, then there are  and much more possibilities are 
>> supported, 
>>
>> In fact,An hour ago,  I just created some issues which will provide extra 
>> functionality not provided by  https://github.com/ahmetb/go-linq 
>> 
>>   
>> for example this one
>>
>> https://github.com/wesovilabs/koazee/issues/2
>>
>> In fact any new issues or suggestion will be great!
>>
>> Thank you so much again
>>
>>
>> On Monday, November 12, 2018 at 8:01:28 AM UTC+1, Marko Ristin wrote:
>>>
>>> Hi!
>>> Could you give a comparison to other similar libraries such as 
>>> https://github.com/clementauger/st
>>> https://github.com/ahmetb/go-linq
>>> ?
>>>
>>> Cheers Marko
>>>
>> -- 
>> You received this message because you are subscribed to the Google Groups 
>> "golang-nuts" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to golang-nuts...@googlegroups.com .
>> For more options, visit https://groups.google.com/d/optout.
>>
>

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


Re: [go-nuts] [ANN] Koazee a library inspired by functional programming and lazy evaluation that takes the hassle out of working with arrays

2018-11-13 Thread Mark Volkmann
I don't get the impression that we are going to see generics in Go anytime
soon. I'll be surprised to see it before 2020. So until then, I like having
a library like this even if it uses reflection.

On Tue, Nov 13, 2018 at 2:14 PM roger peppe  wrote:

> It's obvious that you've put a lot of effort into this! Here's some
> feedback.
>
> I have to say this first: this *is* a very non-Go-idiomatic API. It's
> fundamentally based around reflection, and reflection in Go is generally
> considered to be best avoided apart from some core libraries. Calling a
> function with reflect is orders of magnitude slower than calling it
> directly, and the lack of compiler type checking can make for code that's
> hard to understand when it goes wrong. So I wouldn't use this in production
> code.
>
> That said, it's a fun API and a great way to experiment with some of the
> things that can be done in Go if we sacrifice compile-type type checking.
>
> Taking it at face value, here are a few random thoughts:
>
> - improve the doc comments. Go automatically generates documentation for
> you (for example https://godoc.org/github.com/wesovilabs/koazee/stream)
> and that's the usual place for people to read package documentation.
> Everything that's exported should have a relevant doc comment. There
> shouldn't be any need to generate custom API documentation.
>
> - avoid making public methods return private types. When a public method
> returns a private type, the documentation fails because it does not display
> methods on private types.
>
> - it's almost always better to use the builtin sort package (
> https://golang.org/pkg/sort) rather than rolling your own.
>
> - it's probably best not to use an arbitrary definition of equality
> (stream.equalsValues), but to either use plain "==" or accept an equality
> function.
>
> - it would be nice for it to work on arbitrary streams. This actually
> isn't too hard. Here's a way of doing it that works on an arbitrary
> Iterator interface, so it can iterate over channels, bufio.Scanner, etc.
> https://play.golang.org/p/PXHuD1pR5uC
>
> Finally, if/when generics eventually make it into Go, this kind of API
> will no longer have a huge overhead. I think I'd probably wait until
> then... :)
>
>   cheers,
> rog.
>
> On Sun, 11 Nov 2018 at 19:27, Iván Corrales Solera <
> ivan.corrales.sol...@gmail.com> wrote:
>
>> Hey guys, last weeks I've been working on Koazee and I just released a
>> very first version Titi, v0.0.1 . Koazee is a golang library inspired in
>> Lazy evaluation and functional programming that provides us a rich set of
>> operations that can be done over arrays. If you like the clean code and the
>> functional programming I am sure you enjoy it!
>>
>> Documentation is hosted http://wesovilabs.com/koazee/
>>
>> And the full code can be found on Github,
>> https://github.com/wesovilabs/koazee
>> Any feedback or recommendation will be appreciated! Cheers
>>
>> --
>> You received this message because you are subscribed to the Google Groups
>> "golang-nuts" group.
>> To unsubscribe from this group and stop receiving emails from it, send an
>> email to golang-nuts+unsubscr...@googlegroups.com.
>> For more options, visit https://groups.google.com/d/optout.
>>
> --
> You received this message because you are subscribed to the Google Groups
> "golang-nuts" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to golang-nuts+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.
>


-- 
R. Mark Volkmann
Object Computing, Inc.

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


Re: [go-nuts] [ANN] Koazee a library inspired by functional programming and lazy evaluation that takes the hassle out of working with arrays

2018-11-13 Thread ivan . corrales
Thanks a million rog!

I completely understand what you say. Regarding to the performance, I 
didn't expect as bad performance as I found yesterday when running my 
benchmark test and I will be focused on being able to improve it as much as 
I can. 

I found a way to improve performance in primitive arrays but keeping the 
generic interface. I just started with the reduce operation

The below test, yesterday took  7.08 ns/op vs 4000ns/op aprox. Today I am 
in 400ns/op vs 7

var numbers10 = utils.ArrayOfInt(0, 1, 10)


func BenchmarkSum10(b *testing.B) {
   for i := 0; i < b.N; i++ {
  result := 0
  for _, v := range numbers10 {
 result += v
  }
  output = result
   }

}
func BenchmarkSum10Koazee(b *testing.B) {
   for i := 0; i < b.N; i++ {
  output2 := koazee.
 StreamOf(numbers10).
 Reduce(func(acc, val int) int { return acc + val }).
 Val()
  
   }
}


To improve the performance I am  focused on making the operations smarter. 
As soon as I got it working I will share with you,

Thank you again for all the suggestion and recommendation guys! Very 
appreciated.


El martes, 13 de noviembre de 2018, 21:15:17 (UTC+1), rog escribió:
>
> It's obvious that you've put a lot of effort into this! Here's some 
> feedback.
>
> I have to say this first: this *is* a very non-Go-idiomatic API. It's 
> fundamentally based around reflection, and reflection in Go is generally 
> considered to be best avoided apart from some core libraries. Calling a 
> function with reflect is orders of magnitude slower than calling it 
> directly, and the lack of compiler type checking can make for code that's 
> hard to understand when it goes wrong. So I wouldn't use this in production 
> code.
>
> That said, it's a fun API and a great way to experiment with some of the 
> things that can be done in Go if we sacrifice compile-type type checking.
>
> Taking it at face value, here are a few random thoughts:
>
> - improve the doc comments. Go automatically generates documentation for 
> you (for example https://godoc.org/github.com/wesovilabs/koazee/stream) 
> and that's the usual place for people to read package documentation. 
> Everything that's exported should have a relevant doc comment. There 
> shouldn't be any need to generate custom API documentation.
>
> - avoid making public methods return private types. When a public method 
> returns a private type, the documentation fails because it does not display 
> methods on private types.
>
> - it's almost always better to use the builtin sort package (
> https://golang.org/pkg/sort) rather than rolling your own.
>
> - it's probably best not to use an arbitrary definition of equality 
> (stream.equalsValues), but to either use plain "==" or accept an equality 
> function.
>
> - it would be nice for it to work on arbitrary streams. This actually 
> isn't too hard. Here's a way of doing it that works on an arbitrary 
> Iterator interface, so it can iterate over channels, bufio.Scanner, etc. 
> https://play.golang.org/p/PXHuD1pR5uC
>
> Finally, if/when generics eventually make it into Go, this kind of API 
> will no longer have a huge overhead. I think I'd probably wait until 
> then... :)
>
>   cheers,
> rog.
>
> On Sun, 11 Nov 2018 at 19:27, Iván Corrales Solera <
> ivan.corra...@gmail.com > wrote:
>
>> Hey guys, last weeks I've been working on Koazee and I just released a 
>> very first version Titi, v0.0.1 . Koazee is a golang library inspired in 
>> Lazy evaluation and functional programming that provides us a rich set of 
>> operations that can be done over arrays. If you like the clean code and the 
>> functional programming I am sure you enjoy it!
>>
>> Documentation is hosted http://wesovilabs.com/koazee/
>>
>> And the full code can be found on Github, 
>> https://github.com/wesovilabs/koazee
>> Any feedback or recommendation will be appreciated! Cheers
>>
>> -- 
>> You received this message because you are subscribed to the Google Groups 
>> "golang-nuts" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to golang-nuts...@googlegroups.com .
>> For more options, visit https://groups.google.com/d/optout.
>>
>
-- 


"Este mensaje está
dirigido de manera exclusiva a su destinatario y puede 
contener información
privada y confidencial. No lo reenvíe, copie o 
distribuya a terceros que no
deban conocer su contenido. En caso de haberlo 
recibido por error,  rogamos
lo notifique al remitente y proceda a su 
borrado, así como al de cualquier
documento que pudiera adjuntarse.



 Por 
favor tenga en cuenta que
los correos enviados vía Internet no permiten 
garantizar la confidencialidad de
los mensajes ni su transmisión de forma 
íntegra.



 Las opiniones expresadas en el
presente correo pertenecen 
únicamente al remitente y no representan
necesariamente la opinión del 
Grupo BBVA."



 "This
message is intended exclusively for the adressee and 
may contain privileged and

Re: [go-nuts] [ANN] Koazee a library inspired by functional programming and lazy evaluation that takes the hassle out of working with arrays

2018-11-13 Thread roger peppe
It's obvious that you've put a lot of effort into this! Here's some
feedback.

I have to say this first: this *is* a very non-Go-idiomatic API. It's
fundamentally based around reflection, and reflection in Go is generally
considered to be best avoided apart from some core libraries. Calling a
function with reflect is orders of magnitude slower than calling it
directly, and the lack of compiler type checking can make for code that's
hard to understand when it goes wrong. So I wouldn't use this in production
code.

That said, it's a fun API and a great way to experiment with some of the
things that can be done in Go if we sacrifice compile-type type checking.

Taking it at face value, here are a few random thoughts:

- improve the doc comments. Go automatically generates documentation for
you (for example https://godoc.org/github.com/wesovilabs/koazee/stream) and
that's the usual place for people to read package documentation. Everything
that's exported should have a relevant doc comment. There shouldn't be any
need to generate custom API documentation.

- avoid making public methods return private types. When a public method
returns a private type, the documentation fails because it does not display
methods on private types.

- it's almost always better to use the builtin sort package (
https://golang.org/pkg/sort) rather than rolling your own.

- it's probably best not to use an arbitrary definition of equality
(stream.equalsValues), but to either use plain "==" or accept an equality
function.

- it would be nice for it to work on arbitrary streams. This actually isn't
too hard. Here's a way of doing it that works on an arbitrary Iterator
interface, so it can iterate over channels, bufio.Scanner, etc.
https://play.golang.org/p/PXHuD1pR5uC

Finally, if/when generics eventually make it into Go, this kind of API will
no longer have a huge overhead. I think I'd probably wait until then... :)

  cheers,
rog.

On Sun, 11 Nov 2018 at 19:27, Iván Corrales Solera <
ivan.corrales.sol...@gmail.com> wrote:

> Hey guys, last weeks I've been working on Koazee and I just released a
> very first version Titi, v0.0.1 . Koazee is a golang library inspired in
> Lazy evaluation and functional programming that provides us a rich set of
> operations that can be done over arrays. If you like the clean code and the
> functional programming I am sure you enjoy it!
>
> Documentation is hosted http://wesovilabs.com/koazee/
>
> And the full code can be found on Github,
> https://github.com/wesovilabs/koazee
> Any feedback or recommendation will be appreciated! Cheers
>
> --
> You received this message because you are subscribed to the Google Groups
> "golang-nuts" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to golang-nuts+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.
>

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


Re: [go-nuts] [ANN] Koazee a library inspired by functional programming and lazy evaluation that takes the hassle out of working with arrays

2018-11-13 Thread Bakul Shah
On Nov 12, 2018, at 5:28 PM, robert engels  wrote:
> 
> You can pretty much look at the Java8 streams source (from OpenJDK) and port 
> it to Go. It would need to use interface{} or reflect - the former probably 
> being faster, but both wouldn’t have the type safety - but I think the code 
> would translate pretty easily. Still with IntStream, etc. you could get some 
> of the the type safety back.
> 
> https://docs.oracle.com/javase/8/docs/api/java/util/stream/Stream.html

IMHO k/apl provide a better model as these languages try
to do everything using arrays and have figured out what
primitives are most useful. I don't see that sort of
well roundedness in the Java stream function list.

Use of reflect doesn't bother me provided the interface (API)
is simple and easy to understand. Similarly if predefined
primitives do proper type checking at runtime, that is fine.
Eventually these primitives can be optimized significantly
without changing the interface.

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


Re: [go-nuts] [ANN] Koazee a library inspired by functional programming and lazy evaluation that takes the hassle out of working with arrays

2018-11-12 Thread Iván Corrales Solera
Thanks again Bakul!


The example that you posted looks so beautiful! Thanks for all the help

Currently I am working on improving the performance, because even though It 
is not as good as I expected I think I can do it much better!

Cheers






On Tuesday, November 13, 2018 at 12:51:49 AM UTC+1, Bakul Shah wrote:
>
>
>
> > On Nov 12, 2018, at 9:53 AM, ivan.c...@bbva.com  wrote: 
> > 
> > Hey Bakul again, 
> > 
> > I've been having a look at kona, and the project looks so good, I will 
> look in deep trying to get some good ideas as you recommend me, 
>
> Let me know (off-list) if you need help in deciphering things in kona. 
>
> > In regards to the code generation, I've never done to be honest, but 
> obviously the performance should be better.  By the way, @Marko_Ristin 
>  created an issue asking for some performance testing. I think I will face 
> this issue before considering code generation. But in case of the 
> performance wasn't good at all, for sure that I consider your suggestion 
> about generate the code 
>
> Yes, this may not simple 
>
> > And, what you mean when say "arbitrary streams (e.g. something built on 
> top of channels)?" Sorry for my bad understanding, Thanks in advance 
>
> To me a "stream" can be arbitrarily long and may grow while you are 
> operating on it. For example C's stdin, stdout etc. That means you 
> can't always operate on a "whole" string all at once as you can 
> with arrays. But many of the functions that operate on arrays are 
> useful with real streams. For example, a service may be generating 
> a stream of request log records. You may want to analyze these logs 
> for a given time period and may be create a graph. E.g. you may 
> have a pipeline like 
>
> MakeStream(requestLogStream). 
> StartAt(date1). 
> EndBy(date2). 
> GroupBy(requestorIP). 
> Each(Count). 
> ... 
>
> Here GroupBy may generate a stream of streams. Note: I am just 
> sketching the idea; there are many holes here. 
>
> The idea is you can slice and dice these streams in various ways 
> to make sense of your data. Basically you are building unix like 
> pipelines but they are typed and you are not constrained by shell 
> syntax. 
>
> This will be non-trivial but can be a very useful package. 
>
>
> > 
> > El lunes, 12 de noviembre de 2018, 12:17:12 (UTC+1), Bakul Shah 
> escribió: 
> > On Nov 11, 2018, at 11:27 AM, Iván Corrales Solera <
> ivan.corra...@gmail.com> wrote: 
> > > 
> > > Hey guys, last weeks I've been working on Koazee and I just released a 
> very first version Titi, v0.0.1 . 
> > > 
> > > Koazee is a golang library inspired in Lazy evaluation and functional 
> programming that provides us a rich set of operations that can be done over 
> arrays.  If you like the clean code and the functional programming I am 
> sure you enjoy it! 
> > > 
> > > 
> > > Documentation is hosted http://wesovilabs.com/koazee/ 
> > > 
> > > And the full code can be found on Github, 
> https://github.com/wesovilabs/koazee 
> > > 
> > > Any feedback or recommendation will be appreciated! 
> > 
> > Very nice! I like the clean interface. 
> > 
> > Some comments: 
> > 
> > - Can this handle arbitrary streams (e.g. something built on top of 
> channels)? 
> >   That would make a nice extension! 
> > - You may wish to look at k3 (open source version @ 
> https://github.com/kevinlawler/kona) 
> >   In particular https://github.com/kevinlawler/kona/wiki#verbs 
> >   There are some additional functions (verbs) and higher order functions 
> (adverbs) 
> >   that may be of interest and will fit in nicely within your framework. 
> >   PDFs of K 2.0 User and Reference manuals (listed under links) have 
> much more detail. 
> > - May be you can provide another interface that *generates* Go code 
> instead of 
> >   executing it! If it can be made to generate more efficient code, 
> devoid of 
> >   reflect. 
> > 
> > 
> > "Este mensaje está dirigido de manera exclusiva a su destinatario y 
> puede contener información privada y confidencial. No lo reenvíe, copie o 
> distribuya a terceros que no deban conocer su contenido. En caso de haberlo 
> recibido por error,  rogamos lo notifique al remitente y proceda a su 
> borrado, así como al de cualquier documento que pudiera adjuntarse. 
> > 
> >  Por favor tenga en cuenta que los correos enviados vía Internet no 
> permiten garantizar la confidencialidad de los mensajes ni su transmisión 
> de forma íntegra. 
> > 
> >  Las opiniones expresadas en el presente correo pertenecen únicamente al 
> remitente y no representan necesariamente la opinión del Grupo BBVA." 
> > 
> >  "This message is intended exclusively for the adressee and may contain 
> privileged and confidential information. Please, do not disseminate, copy 
> or distribute it to third parties who should not receive it. In case you 
> have received it by mistake, please inform the sender and delete the 
> message and attachments from your system. 
> > 
> 

Re: [go-nuts] [ANN] Koazee a library inspired by functional programming and lazy evaluation that takes the hassle out of working with arrays

2018-11-12 Thread Robert Engels
You need to review the source in the openjdk to see how the lazy evaluation is 
performed. It should translate fairly easily. 

Good luck !

> On Nov 13, 2018, at 12:54 AM, Iván Corrales Solera 
>  wrote:
> 
> 
> Hey Robert,
> 
> 
> Thanks you so much for your comments.
> 
> Yeah, actually I got background developing with other languages such as Java 
> or Javascript or Python and actually the idea of creating Koazee is mainly 
> produced by my experience with Streams in Java or the map reduce in 
> Javascript. Anyway I haven't coded in Java in las 2 years so I will review 
> the link that was provided by you in order to check the Java API.
> 
> Thanks
> 
> 
>> On Tuesday, November 13, 2018 at 2:28:44 AM UTC+1, robert engels wrote:
>> You can pretty much look at the Java8 streams source (from OpenJDK) and port 
>> it to Go. It would need to use interface{} or reflect - the former probably 
>> being faster, but both wouldn’t have the type safety - but I think the code 
>> would translate pretty easily. Still with IntStream, etc. you could get some 
>> of the the type safety back. 
>> 
>> https://docs.oracle.com/javase/8/docs/api/java/util/stream/Stream.html 
>> 
>> 
>> 
>> > On Nov 12, 2018, at 5:51 PM, Bakul Shah  wrote: 
>> > 
>> > 
>> > 
>> >> On Nov 12, 2018, at 9:53 AM, ivan.c...@bbva.com wrote: 
>> >> 
>> >> Hey Bakul again, 
>> >> 
>> >> I've been having a look at kona, and the project looks so good, I will 
>> >> look in deep trying to get some good ideas as you recommend me, 
>> > 
>> > Let me know (off-list) if you need help in deciphering things in kona. 
>> > 
>> >> In regards to the code generation, I've never done to be honest, but 
>> >> obviously the performance should be better.  By the way, @Marko_Ristin  
>> >> created an issue asking for some performance testing. I think I will face 
>> >> this issue before considering code generation. But in case of the 
>> >> performance wasn't good at all, for sure that I consider your suggestion 
>> >> about generate the code 
>> > 
>> > Yes, this may not simple 
>> > 
>> >> And, what you mean when say "arbitrary streams (e.g. something built on 
>> >> top of channels)?" Sorry for my bad understanding, Thanks in advance 
>> > 
>> > To me a "stream" can be arbitrarily long and may grow while you are 
>> > operating on it. For example C's stdin, stdout etc. That means you 
>> > can't always operate on a "whole" string all at once as you can 
>> > with arrays. But many of the functions that operate on arrays are 
>> > useful with real streams. For example, a service may be generating 
>> > a stream of request log records. You may want to analyze these logs 
>> > for a given time period and may be create a graph. E.g. you may 
>> > have a pipeline like 
>> > 
>> > MakeStream(requestLogStream). 
>> > StartAt(date1). 
>> > EndBy(date2). 
>> > GroupBy(requestorIP). 
>> > Each(Count). 
>> > ... 
>> > 
>> > Here GroupBy may generate a stream of streams. Note: I am just 
>> > sketching the idea; there are many holes here. 
>> > 
>> > The idea is you can slice and dice these streams in various ways 
>> > to make sense of your data. Basically you are building unix like 
>> > pipelines but they are typed and you are not constrained by shell 
>> > syntax. 
>> > 
>> > This will be non-trivial but can be a very useful package. 
>> > 
>> > 
>> >> 
>> >> El lunes, 12 de noviembre de 2018, 12:17:12 (UTC+1), Bakul Shah escribió: 
>> >> On Nov 11, 2018, at 11:27 AM, Iván Corrales Solera 
>> >>  wrote: 
>> >>> 
>> >>> Hey guys, last weeks I've been working on Koazee and I just released a 
>> >>> very first version Titi, v0.0.1 . 
>> >>> 
>> >>> Koazee is a golang library inspired in Lazy evaluation and functional 
>> >>> programming that provides us a rich set of operations that can be done 
>> >>> over arrays.  If you like the clean code and the functional programming 
>> >>> I am sure you enjoy it! 
>> >>> 
>> >>> 
>> >>> Documentation is hosted http://wesovilabs.com/koazee/ 
>> >>> 
>> >>> And the full code can be found on Github, 
>> >>> https://github.com/wesovilabs/koazee 
>> >>> 
>> >>> Any feedback or recommendation will be appreciated! 
>> >> 
>> >> Very nice! I like the clean interface. 
>> >> 
>> >> Some comments: 
>> >> 
>> >> - Can this handle arbitrary streams (e.g. something built on top of 
>> >> channels)? 
>> >>  That would make a nice extension! 
>> >> - You may wish to look at k3 (open source version @ 
>> >> https://github.com/kevinlawler/kona) 
>> >>  In particular https://github.com/kevinlawler/kona/wiki#verbs 
>> >>  There are some additional functions (verbs) and higher order functions 
>> >> (adverbs) 
>> >>  that may be of interest and will fit in nicely within your framework. 
>> >>  PDFs of K 2.0 User and Reference manuals (listed under links) have much 
>> >> more detail. 
>> >> - May be you can provide another interface that *generates* Go code 
>> >> instead of 
>> >>  executing it! If it 

Re: [go-nuts] [ANN] Koazee a library inspired by functional programming and lazy evaluation that takes the hassle out of working with arrays

2018-11-12 Thread Iván Corrales Solera

Hey Robert,


Thanks you so much for your comments.

Yeah, actually I got background developing with other languages such as 
Java or Javascript or Python and actually the idea of creating Koazee is 
mainly produced by my experience with Streams in Java or the map reduce in 
Javascript. Anyway I haven't coded in Java in las 2 years so I will review 
the link that was provided by you in order to check the Java API.

Thanks


On Tuesday, November 13, 2018 at 2:28:44 AM UTC+1, robert engels wrote:
>
> You can pretty much look at the Java8 streams source (from OpenJDK) and 
> port it to Go. It would need to use interface{} or reflect - the former 
> probably being faster, but both wouldn’t have the type safety - but I think 
> the code would translate pretty easily. Still with IntStream, etc. you 
> could get some of the the type safety back. 
>
> https://docs.oracle.com/javase/8/docs/api/java/util/stream/Stream.html 
>
>
>
> > On Nov 12, 2018, at 5:51 PM, Bakul Shah  > wrote: 
> > 
> > 
> > 
> >> On Nov 12, 2018, at 9:53 AM, ivan.c...@bbva.com  wrote: 
> >> 
> >> Hey Bakul again, 
> >> 
> >> I've been having a look at kona, and the project looks so good, I will 
> look in deep trying to get some good ideas as you recommend me, 
> > 
> > Let me know (off-list) if you need help in deciphering things in kona. 
> > 
> >> In regards to the code generation, I've never done to be honest, but 
> obviously the performance should be better.  By the way, @Marko_Ristin 
>  created an issue asking for some performance testing. I think I will face 
> this issue before considering code generation. But in case of the 
> performance wasn't good at all, for sure that I consider your suggestion 
> about generate the code 
> > 
> > Yes, this may not simple 
> > 
> >> And, what you mean when say "arbitrary streams (e.g. something built on 
> top of channels)?" Sorry for my bad understanding, Thanks in advance 
> > 
> > To me a "stream" can be arbitrarily long and may grow while you are 
> > operating on it. For example C's stdin, stdout etc. That means you 
> > can't always operate on a "whole" string all at once as you can 
> > with arrays. But many of the functions that operate on arrays are 
> > useful with real streams. For example, a service may be generating 
> > a stream of request log records. You may want to analyze these logs 
> > for a given time period and may be create a graph. E.g. you may 
> > have a pipeline like 
> > 
> > MakeStream(requestLogStream). 
> > StartAt(date1). 
> > EndBy(date2). 
> > GroupBy(requestorIP). 
> > Each(Count). 
> > ... 
> > 
> > Here GroupBy may generate a stream of streams. Note: I am just 
> > sketching the idea; there are many holes here. 
> > 
> > The idea is you can slice and dice these streams in various ways 
> > to make sense of your data. Basically you are building unix like 
> > pipelines but they are typed and you are not constrained by shell 
> > syntax. 
> > 
> > This will be non-trivial but can be a very useful package. 
> > 
> > 
> >> 
> >> El lunes, 12 de noviembre de 2018, 12:17:12 (UTC+1), Bakul Shah 
> escribió: 
> >> On Nov 11, 2018, at 11:27 AM, Iván Corrales Solera <
> ivan.corra...@gmail.com> wrote: 
> >>> 
> >>> Hey guys, last weeks I've been working on Koazee and I just released a 
> very first version Titi, v0.0.1 . 
> >>> 
> >>> Koazee is a golang library inspired in Lazy evaluation and functional 
> programming that provides us a rich set of operations that can be done over 
> arrays.  If you like the clean code and the functional programming I am 
> sure you enjoy it! 
> >>> 
> >>> 
> >>> Documentation is hosted http://wesovilabs.com/koazee/ 
> >>> 
> >>> And the full code can be found on Github, 
> https://github.com/wesovilabs/koazee 
> >>> 
> >>> Any feedback or recommendation will be appreciated! 
> >> 
> >> Very nice! I like the clean interface. 
> >> 
> >> Some comments: 
> >> 
> >> - Can this handle arbitrary streams (e.g. something built on top of 
> channels)? 
> >>  That would make a nice extension! 
> >> - You may wish to look at k3 (open source version @ 
> https://github.com/kevinlawler/kona) 
> >>  In particular https://github.com/kevinlawler/kona/wiki#verbs 
> >>  There are some additional functions (verbs) and higher order functions 
> (adverbs) 
> >>  that may be of interest and will fit in nicely within your framework. 
> >>  PDFs of K 2.0 User and Reference manuals (listed under links) have 
> much more detail. 
> >> - May be you can provide another interface that *generates* Go code 
> instead of 
> >>  executing it! If it can be made to generate more efficient code, 
> devoid of 
> >>  reflect. 
> >> 
> >> 
> >> "Este mensaje está dirigido de manera exclusiva a su destinatario y 
> puede contener información privada y confidencial. No lo reenvíe, copie o 
> distribuya a terceros que no deban conocer su contenido. En caso de haberlo 
> recibido por error,  rogamos lo notifique al 

Re: [go-nuts] [ANN] Koazee a library inspired by functional programming and lazy evaluation that takes the hassle out of working with arrays

2018-11-12 Thread robert engels
You can pretty much look at the Java8 streams source (from OpenJDK) and port it 
to Go. It would need to use interface{} or reflect - the former probably being 
faster, but both wouldn’t have the type safety - but I think the code would 
translate pretty easily. Still with IntStream, etc. you could get some of the 
the type safety back.

https://docs.oracle.com/javase/8/docs/api/java/util/stream/Stream.html



> On Nov 12, 2018, at 5:51 PM, Bakul Shah  wrote:
> 
> 
> 
>> On Nov 12, 2018, at 9:53 AM, ivan.corra...@bbva.com wrote:
>> 
>> Hey Bakul again,
>> 
>> I've been having a look at kona, and the project looks so good, I will look 
>> in deep trying to get some good ideas as you recommend me,
> 
> Let me know (off-list) if you need help in deciphering things in kona.
> 
>> In regards to the code generation, I've never done to be honest, but 
>> obviously the performance should be better.  By the way, @Marko_Ristin  
>> created an issue asking for some performance testing. I think I will face 
>> this issue before considering code generation. But in case of the 
>> performance wasn't good at all, for sure that I consider your suggestion 
>> about generate the code
> 
> Yes, this may not simple
> 
>> And, what you mean when say "arbitrary streams (e.g. something built on top 
>> of channels)?" Sorry for my bad understanding, Thanks in advance
> 
> To me a "stream" can be arbitrarily long and may grow while you are
> operating on it. For example C's stdin, stdout etc. That means you
> can't always operate on a "whole" string all at once as you can 
> with arrays. But many of the functions that operate on arrays are
> useful with real streams. For example, a service may be generating
> a stream of request log records. You may want to analyze these logs
> for a given time period and may be create a graph. E.g. you may
> have a pipeline like
> 
>   MakeStream(requestLogStream).
>   StartAt(date1).
>   EndBy(date2).
>   GroupBy(requestorIP).
>   Each(Count).
>   ...
> 
> Here GroupBy may generate a stream of streams. Note: I am just
> sketching the idea; there are many holes here.
> 
> The idea is you can slice and dice these streams in various ways
> to make sense of your data. Basically you are building unix like
> pipelines but they are typed and you are not constrained by shell
> syntax.
> 
> This will be non-trivial but can be a very useful package.
> 
> 
>> 
>> El lunes, 12 de noviembre de 2018, 12:17:12 (UTC+1), Bakul Shah escribió:
>> On Nov 11, 2018, at 11:27 AM, Iván Corrales Solera  
>> wrote: 
>>> 
>>> Hey guys, last weeks I've been working on Koazee and I just released a very 
>>> first version Titi, v0.0.1 . 
>>> 
>>> Koazee is a golang library inspired in Lazy evaluation and functional 
>>> programming that provides us a rich set of operations that can be done over 
>>> arrays.  If you like the clean code and the functional programming I am 
>>> sure you enjoy it! 
>>> 
>>> 
>>> Documentation is hosted http://wesovilabs.com/koazee/ 
>>> 
>>> And the full code can be found on Github, 
>>> https://github.com/wesovilabs/koazee 
>>> 
>>> Any feedback or recommendation will be appreciated! 
>> 
>> Very nice! I like the clean interface. 
>> 
>> Some comments: 
>> 
>> - Can this handle arbitrary streams (e.g. something built on top of 
>> channels)? 
>>  That would make a nice extension! 
>> - You may wish to look at k3 (open source version @ 
>> https://github.com/kevinlawler/kona) 
>>  In particular https://github.com/kevinlawler/kona/wiki#verbs 
>>  There are some additional functions (verbs) and higher order functions 
>> (adverbs) 
>>  that may be of interest and will fit in nicely within your framework. 
>>  PDFs of K 2.0 User and Reference manuals (listed under links) have much 
>> more detail. 
>> - May be you can provide another interface that *generates* Go code instead 
>> of 
>>  executing it! If it can be made to generate more efficient code, devoid of 
>>  reflect. 
>> 
>> 
>> "Este mensaje está dirigido de manera exclusiva a su destinatario y puede 
>> contener información privada y confidencial. No lo reenvíe, copie o 
>> distribuya a terceros que no deban conocer su contenido. En caso de haberlo 
>> recibido por error,  rogamos lo notifique al remitente y proceda a su 
>> borrado, así como al de cualquier documento que pudiera adjuntarse.
>> 
>> Por favor tenga en cuenta que los correos enviados vía Internet no permiten 
>> garantizar la confidencialidad de los mensajes ni su transmisión de forma 
>> íntegra.
>> 
>> Las opiniones expresadas en el presente correo pertenecen únicamente al 
>> remitente y no representan necesariamente la opinión del Grupo BBVA."
>> 
>> "This message is intended exclusively for the adressee and may contain 
>> privileged and confidential information. Please, do not disseminate, copy or 
>> distribute it to third parties who should not receive it. In case you have 
>> received it by mistake, please inform the sender and delete 

Re: [go-nuts] [ANN] Koazee a library inspired by functional programming and lazy evaluation that takes the hassle out of working with arrays

2018-11-12 Thread Bakul Shah



> On Nov 12, 2018, at 9:53 AM, ivan.corra...@bbva.com wrote:
> 
> Hey Bakul again,
> 
> I've been having a look at kona, and the project looks so good, I will look 
> in deep trying to get some good ideas as you recommend me,

Let me know (off-list) if you need help in deciphering things in kona.

> In regards to the code generation, I've never done to be honest, but 
> obviously the performance should be better.  By the way, @Marko_Ristin  
> created an issue asking for some performance testing. I think I will face 
> this issue before considering code generation. But in case of the performance 
> wasn't good at all, for sure that I consider your suggestion about generate 
> the code

Yes, this may not simple

> And, what you mean when say "arbitrary streams (e.g. something built on top 
> of channels)?" Sorry for my bad understanding, Thanks in advance

To me a "stream" can be arbitrarily long and may grow while you are
operating on it. For example C's stdin, stdout etc. That means you
can't always operate on a "whole" string all at once as you can 
with arrays. But many of the functions that operate on arrays are
useful with real streams. For example, a service may be generating
a stream of request log records. You may want to analyze these logs
for a given time period and may be create a graph. E.g. you may
have a pipeline like

MakeStream(requestLogStream).
StartAt(date1).
EndBy(date2).
GroupBy(requestorIP).
Each(Count).
...

Here GroupBy may generate a stream of streams. Note: I am just
sketching the idea; there are many holes here.

The idea is you can slice and dice these streams in various ways
to make sense of your data. Basically you are building unix like
pipelines but they are typed and you are not constrained by shell
syntax.

This will be non-trivial but can be a very useful package.


> 
> El lunes, 12 de noviembre de 2018, 12:17:12 (UTC+1), Bakul Shah escribió:
> On Nov 11, 2018, at 11:27 AM, Iván Corrales Solera  
> wrote: 
> > 
> > Hey guys, last weeks I've been working on Koazee and I just released a very 
> > first version Titi, v0.0.1 . 
> > 
> > Koazee is a golang library inspired in Lazy evaluation and functional 
> > programming that provides us a rich set of operations that can be done over 
> > arrays.  If you like the clean code and the functional programming I am 
> > sure you enjoy it! 
> > 
> > 
> > Documentation is hosted http://wesovilabs.com/koazee/ 
> > 
> > And the full code can be found on Github, 
> > https://github.com/wesovilabs/koazee 
> > 
> > Any feedback or recommendation will be appreciated! 
> 
> Very nice! I like the clean interface. 
> 
> Some comments: 
> 
> - Can this handle arbitrary streams (e.g. something built on top of 
> channels)? 
>   That would make a nice extension! 
> - You may wish to look at k3 (open source version @ 
> https://github.com/kevinlawler/kona) 
>   In particular https://github.com/kevinlawler/kona/wiki#verbs 
>   There are some additional functions (verbs) and higher order functions 
> (adverbs) 
>   that may be of interest and will fit in nicely within your framework. 
>   PDFs of K 2.0 User and Reference manuals (listed under links) have much 
> more detail. 
> - May be you can provide another interface that *generates* Go code instead 
> of 
>   executing it! If it can be made to generate more efficient code, devoid of 
>   reflect. 
> 
> 
> "Este mensaje está dirigido de manera exclusiva a su destinatario y puede 
> contener información privada y confidencial. No lo reenvíe, copie o 
> distribuya a terceros que no deban conocer su contenido. En caso de haberlo 
> recibido por error,  rogamos lo notifique al remitente y proceda a su 
> borrado, así como al de cualquier documento que pudiera adjuntarse.
> 
>  Por favor tenga en cuenta que los correos enviados vía Internet no permiten 
> garantizar la confidencialidad de los mensajes ni su transmisión de forma 
> íntegra.
> 
>  Las opiniones expresadas en el presente correo pertenecen únicamente al 
> remitente y no representan necesariamente la opinión del Grupo BBVA."
> 
>  "This message is intended exclusively for the adressee and may contain 
> privileged and confidential information. Please, do not disseminate, copy or 
> distribute it to third parties who should not receive it. In case you have 
> received it by mistake, please inform the sender and delete the message and 
> attachments from your system.
> 
>  Please keep in mind that e-mails sent by Internet do not allow to guarantee 
> neither the confidentiality or the integrity of the messages sent."
> 
> 
> -- 
> You received this message because you are subscribed to the Google Groups 
> "golang-nuts" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to golang-nuts+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.

-- 
You received this message because you are subscribed to the 

Re: [go-nuts] [ANN] Koazee a library inspired by functional programming and lazy evaluation that takes the hassle out of working with arrays

2018-11-12 Thread ivan . corrales
Hey Bakul again,

I've been having a look at kona, and the project looks so good, I will look 
in deep trying to get some good ideas as you recommend me,

In regards to the code generation, I've never done to be honest, but 
obviously the performance should be better.  By the way, @Marko_Ristin  
created an issue asking for some performance testing. I think I will face 
this issue before considering code generation. But in case of the 
performance wasn't good at all, for sure that I consider your suggestion 
about generate the code

And, what you mean when say "arbitrary streams (e.g. something built on top 
of channels)?" Sorry for my bad understanding, Thanks in advance

El lunes, 12 de noviembre de 2018, 12:17:12 (UTC+1), Bakul Shah escribió:
>
> On Nov 11, 2018, at 11:27 AM, Iván Corrales Solera <
> ivan.corra...@gmail.com > wrote: 
> > 
> > Hey guys, last weeks I've been working on Koazee and I just released a 
> very first version Titi, v0.0.1 . 
> > 
> > Koazee is a golang library inspired in Lazy evaluation and functional 
> programming that provides us a rich set of operations that can be done over 
> arrays.  If you like the clean code and the functional programming I am 
> sure you enjoy it! 
> > 
> > 
> > Documentation is hosted http://wesovilabs.com/koazee/ 
> > 
> > And the full code can be found on Github, 
> https://github.com/wesovilabs/koazee 
> > 
> > Any feedback or recommendation will be appreciated! 
>
> Very nice! I like the clean interface. 
>
> Some comments: 
>
> - Can this handle arbitrary streams (e.g. something built on top of 
> channels)? 
>   That would make a nice extension! 
> - You may wish to look at k3 (open source version @ 
> https://github.com/kevinlawler/kona) 
>   In particular https://github.com/kevinlawler/kona/wiki#verbs 
>   There are some additional functions (verbs) and higher order functions 
> (adverbs) 
>   that may be of interest and will fit in nicely within your framework. 
>   PDFs of K 2.0 User and Reference manuals (listed under links) have much 
> more detail. 
> - May be you can provide another interface that *generates* Go code 
> instead of 
>   executing it! If it can be made to generate more efficient code, devoid 
> of 
>   reflect. 
>
>
-- 


"Este mensaje está
dirigido de manera exclusiva a su destinatario y puede 
contener información
privada y confidencial. No lo reenvíe, copie o 
distribuya a terceros que no
deban conocer su contenido. En caso de haberlo 
recibido por error,  rogamos
lo notifique al remitente y proceda a su 
borrado, así como al de cualquier
documento que pudiera adjuntarse.



 Por 
favor tenga en cuenta que
los correos enviados vía Internet no permiten 
garantizar la confidencialidad de
los mensajes ni su transmisión de forma 
íntegra.



 Las opiniones expresadas en el
presente correo pertenecen 
únicamente al remitente y no representan
necesariamente la opinión del 
Grupo BBVA."



 "This
message is intended exclusively for the adressee and 
may contain privileged and
confidential information. Please, do not 
disseminate, copy or distribute it to
third parties who should not receive 
it. In case you have received it by
mistake, please inform the sender and 
delete the message and attachments from
your system.



 Please
keep in 
mind that e-mails sent by Internet do not allow to guarantee neither
the 
confidentiality or the integrity of the messages sent."

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


Re: [go-nuts] [ANN] Koazee a library inspired by functional programming and lazy evaluation that takes the hassle out of working with arrays

2018-11-12 Thread ivan . corrales
Hey Bakul thank you so much for your feedback,

It's so great receive these kind of suggestions, I will create the required 
issue for implementing it.

Cheers!





El lunes, 12 de noviembre de 2018, 12:17:12 (UTC+1), Bakul Shah escribió:
>
> On Nov 11, 2018, at 11:27 AM, Iván Corrales Solera <
> ivan.corra...@gmail.com > wrote: 
> > 
> > Hey guys, last weeks I've been working on Koazee and I just released a 
> very first version Titi, v0.0.1 . 
> > 
> > Koazee is a golang library inspired in Lazy evaluation and functional 
> programming that provides us a rich set of operations that can be done over 
> arrays.  If you like the clean code and the functional programming I am 
> sure you enjoy it! 
> > 
> > 
> > Documentation is hosted http://wesovilabs.com/koazee/ 
> > 
> > And the full code can be found on Github, 
> https://github.com/wesovilabs/koazee 
> > 
> > Any feedback or recommendation will be appreciated! 
>
> Very nice! I like the clean interface. 
>
> Some comments: 
>
> - Can this handle arbitrary streams (e.g. something built on top of 
> channels)? 
>   That would make a nice extension! 
> - You may wish to look at k3 (open source version @ 
> https://github.com/kevinlawler/kona) 
>   In particular https://github.com/kevinlawler/kona/wiki#verbs 
>   There are some additional functions (verbs) and higher order functions 
> (adverbs) 
>   that may be of interest and will fit in nicely within your framework. 
>   PDFs of K 2.0 User and Reference manuals (listed under links) have much 
> more detail. 
> - May be you can provide another interface that *generates* Go code 
> instead of 
>   executing it! If it can be made to generate more efficient code, devoid 
> of 
>   reflect. 
>
>
-- 


"Este mensaje está
dirigido de manera exclusiva a su destinatario y puede 
contener información
privada y confidencial. No lo reenvíe, copie o 
distribuya a terceros que no
deban conocer su contenido. En caso de haberlo 
recibido por error,  rogamos
lo notifique al remitente y proceda a su 
borrado, así como al de cualquier
documento que pudiera adjuntarse.



 Por 
favor tenga en cuenta que
los correos enviados vía Internet no permiten 
garantizar la confidencialidad de
los mensajes ni su transmisión de forma 
íntegra.



 Las opiniones expresadas en el
presente correo pertenecen 
únicamente al remitente y no representan
necesariamente la opinión del 
Grupo BBVA."



 "This
message is intended exclusively for the adressee and 
may contain privileged and
confidential information. Please, do not 
disseminate, copy or distribute it to
third parties who should not receive 
it. In case you have received it by
mistake, please inform the sender and 
delete the message and attachments from
your system.



 Please
keep in 
mind that e-mails sent by Internet do not allow to guarantee neither
the 
confidentiality or the integrity of the messages sent."

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


Re: [go-nuts] [ANN] Koazee a library inspired by functional programming and lazy evaluation that takes the hassle out of working with arrays

2018-11-12 Thread Bakul Shah
On Nov 11, 2018, at 11:27 AM, Iván Corrales Solera 
 wrote:
> 
> Hey guys, last weeks I've been working on Koazee and I just released a very 
> first version Titi, v0.0.1 . 
> 
> Koazee is a golang library inspired in Lazy evaluation and functional 
> programming that provides us a rich set of operations that can be done over 
> arrays.  If you like the clean code and the functional programming I am sure 
> you enjoy it!
> 
> 
> Documentation is hosted http://wesovilabs.com/koazee/
> 
> And the full code can be found on Github, https://github.com/wesovilabs/koazee
> 
> Any feedback or recommendation will be appreciated!

Very nice! I like the clean interface.

Some comments:

- Can this handle arbitrary streams (e.g. something built on top of channels)?
  That would make a nice extension!
- You may wish to look at k3 (open source version @ 
https://github.com/kevinlawler/kona)
  In particular https://github.com/kevinlawler/kona/wiki#verbs
  There are some additional functions (verbs) and higher order functions 
(adverbs)
  that may be of interest and will fit in nicely within your framework.
  PDFs of K 2.0 User and Reference manuals (listed under links) have much more 
detail.
- May be you can provide another interface that *generates* Go code instead of
  executing it! If it can be made to generate more efficient code, devoid of
  reflect.

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


Re: [go-nuts] [ANN] Koazee a library inspired by functional programming and lazy evaluation that takes the hassle out of working with arrays

2018-11-12 Thread Tamás Gulácsi
2018. november 12., hétfő 9:08:28 UTC+1 időpontban Iván Corrales Solera a 
következőt írta:
>
> Hey Tamás,
>
> First of all, thank you for your feedback. Well, actually as I commented 
> on the tile "takes the hassle out of working with arrays", so yes so far 
> only slices are supported, 
>
> In regarding to the lazy or versatile, I don't get you I mean in the 
> example below:
>
>
> package main
>
> import (
>"github.com/wesovilabs/koazee"
>"github.com/wesovilabs/koazee/logger"
> )
>
> var numbers = []int{1, 2, 3, 4, 4, 1}
>
> func main() {
>logger.Enabled = true
>var stream = koazee.Stream().
>   Filter(func(val int) bool {
>  return val%2 == 0
>   }).
>   Map(func(val int) int {
>  return val * 2
>   }).
>   RemoveDuplicates()
>
>stream.With(numbers).
>   Reduce(func(acc, val int) int {
>  return acc + val
>   })
> }
>
>
> nothing is evaluated until you call Reduce function, and in case of some 
> of the previous evaluation fail reduce won't be performed.
>
>
stream.With stores the slice and calls the "run" method.
"run" calls "items", which copies the _whole_ slice (shallow), with 
reflection (slow), then returns the fresh copied slice in a Stream.

This is nowhere not Lazy.

In regard to the versatility, Koazee provide a "generic" support for any 
> type of slices, as you can see in the examples or in the documentation no 
> casting are required for handling your arrays.
>
> I hope this can resolve your doubts, and hanks again for your feedback,, 
> really appreciate it
>
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


Re: [go-nuts] [ANN] Koazee a library inspired by functional programming and lazy evaluation that takes the hassle out of working with arrays

2018-11-12 Thread Iván Corrales Solera
Hey Marko thank you so much for your suggestion. I will do it asap.

Sorry If you missed some functionality but I just wanted to share a very 
first release for learn from your feedback guys. And It's so great this 
kind of suggestions.


Thanks!

On Monday, November 12, 2018 at 8:59:20 AM UTC+1, Marko Ristin wrote:
>
> Hi Ivan,
> Any performance comparisons with other approaches would be greatly 
> appreciated and I assume they would also help the adoption a lot.
>
> Cheers Marko 
>
> Le lun. 12 nov. 2018 à 08:20, Iván Corrales Solera <
> ivan.corra...@gmail.com > a écrit :
>
>> Hey Marko,
>>
>> Thanks you so much for your reply!,
>>
>>
>> To be honest I didn't know about this libraries, but after having a quick 
>> look at them I see that
>>
>> The set of provided operations in https://github.com/clementauger/st 
>> 
>>  is 
>> more reduced (but I assume it will be increased), and in the case of  
>> https://github.com/ahmetb/go-linq 
>> 
>>  I 
>> should take time to having a look and find the difference,  because like 
>> Koazee both are based on Lazy evaluation, so the provided functionality is 
>> similar. 
>>
>> As a strong point of koazee I would say the documentation, 
>> http://wesovilabs.com/koazee/ and that Koazee is only 1 week from I 
>> started to code it, then there are  and much more possibilities are 
>> supported, 
>>
>> In fact,An hour ago,  I just created some issues which will provide extra 
>> functionality not provided by  https://github.com/ahmetb/go-linq 
>> 
>>   
>> for example this one
>>
>> https://github.com/wesovilabs/koazee/issues/2
>>
>> In fact any new issues or suggestion will be great!
>>
>> Thank you so much again
>>
>>
>> On Monday, November 12, 2018 at 8:01:28 AM UTC+1, Marko Ristin wrote:
>>>
>>> Hi!
>>> Could you give a comparison to other similar libraries such as 
>>> https://github.com/clementauger/st
>>> https://github.com/ahmetb/go-linq
>>> ?
>>>
>>> Cheers Marko
>>>
>> -- 
>> You received this message because you are subscribed to the Google Groups 
>> "golang-nuts" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to golang-nuts...@googlegroups.com .
>> For more options, visit https://groups.google.com/d/optout.
>>
>

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


Re: [go-nuts] [ANN] Koazee a library inspired by functional programming and lazy evaluation that takes the hassle out of working with arrays

2018-11-12 Thread Iván Corrales Solera
Hey Tamás,

First of all, thank you for your feedback. Well, actually as I commented on 
the tile "takes the hassle out of working with arrays", so yes so far only 
slices are supported, 

In regarding to the lazy or versatile, I don't get you I mean in the 
example below:


package main

import (
   "github.com/wesovilabs/koazee"
   "github.com/wesovilabs/koazee/logger"
)

var numbers = []int{1, 2, 3, 4, 4, 1}

func main() {
   logger.Enabled = true
   var stream = koazee.Stream().
  Filter(func(val int) bool {
 return val%2 == 0
  }).
  Map(func(val int) int {
 return val * 2
  }).
  RemoveDuplicates()

   stream.With(numbers).
  Reduce(func(acc, val int) int {
 return acc + val
  })
}


nothing is evaluated until you call Reduce function, and in case of some of 
the previous evaluation fail reduce won't be performed.

In regard to the versatility, Koazee provide a "generic" support for any 
type of slices, as you can see in the examples or in the documentation no 
casting are required for handling your arrays.

I hope this can resolve your doubts, and hanks again for your feedback,, 
really appreciate it





On Monday, November 12, 2018 at 8:18:04 AM UTC+1, Tamás Gulácsi wrote:
>
> As far as I understand, this works only with slices, and first it copies 
> them.
> So neither lazy nor versatile.

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


Re: [go-nuts] [ANN] Koazee a library inspired by functional programming and lazy evaluation that takes the hassle out of working with arrays

2018-11-11 Thread Marko Ristin-Kaufmann
Hi Ivan,
Any performance comparisons with other approaches would be greatly
appreciated and I assume they would also help the adoption a lot.

Cheers Marko

Le lun. 12 nov. 2018 à 08:20, Iván Corrales Solera <
ivan.corrales.sol...@gmail.com> a écrit :

> Hey Marko,
>
> Thanks you so much for your reply!,
>
>
> To be honest I didn't know about this libraries, but after having a quick
> look at them I see that
>
> The set of provided operations in https://github.com/clementauger/st
> 
>  is
> more reduced (but I assume it will be increased), and in the case of
> https://github.com/ahmetb/go-linq
> 
>  I
> should take time to having a look and find the difference,  because like
> Koazee both are based on Lazy evaluation, so the provided functionality is
> similar.
>
> As a strong point of koazee I would say the documentation,
> http://wesovilabs.com/koazee/ and that Koazee is only 1 week from I
> started to code it, then there are  and much more possibilities are
> supported,
>
> In fact,An hour ago,  I just created some issues which will provide extra
> functionality not provided by  https://github.com/ahmetb/go-linq
> 
> for example this one
>
> https://github.com/wesovilabs/koazee/issues/2
>
> In fact any new issues or suggestion will be great!
>
> Thank you so much again
>
>
> On Monday, November 12, 2018 at 8:01:28 AM UTC+1, Marko Ristin wrote:
>>
>> Hi!
>> Could you give a comparison to other similar libraries such as
>> https://github.com/clementauger/st
>> https://github.com/ahmetb/go-linq
>> ?
>>
>> Cheers Marko
>>
> --
> You received this message because you are subscribed to the Google Groups
> "golang-nuts" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to golang-nuts+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.
>

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


Re: [go-nuts] [ANN] Koazee a library inspired by functional programming and lazy evaluation that takes the hassle out of working with arrays

2018-11-11 Thread Iván Corrales Solera
Hey Marko,

Thanks you so much for your reply!,


To be honest I didn't know about this libraries, but after having a quick 
look at them I see that

The set of provided operations in https://github.com/clementauger/st 

 is 
more reduced (but I assume it will be increased), and in the case of  
https://github.com/ahmetb/go-linq 

 I 
should take time to having a look and find the difference,  because like 
Koazee both are based on Lazy evaluation, so the provided functionality is 
similar. 

As a strong point of koazee I would say the 
documentation, http://wesovilabs.com/koazee/ and that Koazee is only 1 week 
from I started to code it, then there are  and much more possibilities are 
supported, 

In fact,An hour ago,  I just created some issues which will provide extra 
functionality not provided by  https://github.com/ahmetb/go-linq 

  
for example this one

https://github.com/wesovilabs/koazee/issues/2

In fact any new issues or suggestion will be great!

Thank you so much again


On Monday, November 12, 2018 at 8:01:28 AM UTC+1, Marko Ristin wrote:
>
> Hi!
> Could you give a comparison to other similar libraries such as 
> https://github.com/clementauger/st
> https://github.com/ahmetb/go-linq
> ?
>
> Cheers Marko
>

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


Re: [go-nuts] [ANN] Koazee a library inspired by functional programming and lazy evaluation that takes the hassle out of working with arrays

2018-11-11 Thread Tamás Gulácsi
As far as I understand, this works only with slices, and first it copies them.
So neither lazy nor versatile.

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


Re: [go-nuts] [ANN] Koazee a library inspired by functional programming and lazy evaluation that takes the hassle out of working with arrays

2018-11-11 Thread Marko Ristin-Kaufmann
Hi!
Could you give a comparison to other similar libraries such as
https://github.com/clementauger/st
https://github.com/ahmetb/go-linq
?

Cheers Marko

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


Re: [go-nuts] [ANN] Koazee a library inspired by functional programming and lazy evaluation that takes the hassle out of working with arrays

2018-11-11 Thread Iván Corrales Solera
Thank you so much Mark!

It's so great hear that!



On Monday, November 12, 2018 at 12:37:22 AM UTC+1, Mark Volkmann wrote:
>
> Wow, this is a wonderful library! Thanks so much for creating this!
>
> ---
> R. Mark Volkmann
> Object Computing, Inc.
>
> On Nov 11, 2018, at 1:27 PM, Iván Corrales Solera  > wrote:
>
> Hey guys, last weeks I've been working on Koazee and I just released a 
> very first version Titi, v0.0.1 . Koazee is a golang library inspired in 
> Lazy evaluation and functional programming that provides us a rich set of 
> operations that can be done over arrays. If you like the clean code and the 
> functional programming I am sure you enjoy it!
>
> Documentation is hosted http://wesovilabs.com/koazee/
>
> And the full code can be found on Github, 
> https://github.com/wesovilabs/koazee
> Any feedback or recommendation will be appreciated! Cheers
>
> -- 
> You received this message because you are subscribed to the Google Groups 
> "golang-nuts" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to golang-nuts...@googlegroups.com .
> For more options, visit https://groups.google.com/d/optout.
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


Re: [go-nuts] [ANN] Koazee a library inspired by functional programming and lazy evaluation that takes the hassle out of working with arrays

2018-11-11 Thread Mark Volkmann
Wow, this is a wonderful library! Thanks so much for creating this!

---
R. Mark Volkmann
Object Computing, Inc.

> On Nov 11, 2018, at 1:27 PM, Iván Corrales Solera 
>  wrote:
> 
> Hey guys, last weeks I've been working on Koazee and I just released a very 
> first version Titi, v0.0.1 . 
> 
> Koazee is a golang library inspired in Lazy evaluation and functional 
> programming that provides us a rich set of operations that can be done over 
> arrays.  If you like the clean code and the functional programming I am sure 
> you enjoy it!
> 
> Documentation is hosted http://wesovilabs.com/koazee/
> 
> And the full code can be found on Github, https://github.com/wesovilabs/koazee
> 
> Any feedback or recommendation will be appreciated!
> 
> Cheers
> -- 
> You received this message because you are subscribed to the Google Groups 
> "golang-nuts" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to golang-nuts+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


[go-nuts] [ANN] Koazee a library inspired by functional programming and lazy evaluation that takes the hassle out of working with arrays

2018-11-11 Thread Iván Corrales Solera
Hey guys, last weeks I've been working on Koazee and I just released a very 
first version Titi, v0.0.1 . Koazee is a golang library inspired in Lazy 
evaluation and functional programming that provides us a rich set of 
operations that can be done over arrays. If you like the clean code and the 
functional programming I am sure you enjoy it!

Documentation is hosted http://wesovilabs.com/koazee/

And the full code can be found on Github, 
https://github.com/wesovilabs/koazee
Any feedback or recommendation will be appreciated! Cheers

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.