jessitron / fp4rd

Functional Principles for the Ruby Developer
106 stars 8 forks source link

Interested in partnering / combining / cross-pollinating with Rumonade? #1

Open ms-ati opened 10 years ago

ms-ati commented 10 years ago

Hi Jessi,

I like what you are doing here, and wondered if you'd be interested in discussing combining some of these ideas with the Rumonade library.

(My name is Marc, and I also work in both the Ruby/Scala worlds)

If you'd like, you can reach me via email at marc@usainnov.com.

Regards, -Marc

jessitron commented 10 years ago

oh! yes! This is very interesting.

I've been looking for something like that. I started something (as far as reserving a gem name and implementing exactly what I needed for my demo) as rubyz. I'd love to talk about this!

Here's a question, something I've been mulling over. The name of the method "map" - in Ruby this is a standard method on Enumerable that always returns an array. Implementing "map" in the functional meaning of it violates the Rubyists's expectations. Implementing it in the Ruby way violates the FP-er's expectations.

At first I wanted Either to extend Enumerable, but then that was too far wrong. Bringing in Ruby's version of map was not acceptable. I settled for a different method name, without the conflicting meanings. (transform, as seen in Guava's collections for Java.)

What is your thought on conflicting expectations between Rubyists and FP? And on FP terms in general - as a longtime Java dev I find "map" confusing anyway. In Java a map is a dictionary.

Why did you use "select" for filter?

What's your background?

and why "Prefer blocks to lambda/Procs"?

Jessica

On Sun, Oct 20, 2013 at 12:54 PM, Marc Siegel notifications@github.comwrote:

Hi Jessi,

I like what you are doing here, and wondered if you'd be interested in discussing combining some of these ideas with the Rumonade library.

(My name is Marc, and I also work in both the Ruby/Scala worlds)

If you'd like, you can reach me via email at marc@usainnov.com.

Regards, -Marc

— Reply to this email directly or view it on GitHubhttps://github.com/jessitron/fp4rd/issues/1 .

ms-ati commented 10 years ago

Great!

I'll get back to you on these points ASAP -- I'm busy running around this morning trying to work out a tourist visa issue -- but I'm glad to hear we might pool insights here!

-Marc

On Sun, Oct 20, 2013 at 4:47 PM, Jessica Kerr notifications@github.comwrote:

oh! yes! This is very interesting.

I've been looking for something like that. I started something (as far as reserving a gem name and implementing exactly what I needed for my demo) as rubyz. I'd love to talk about this!

Here's a question, something I've been mulling over. The name of the method "map" - in Ruby this is a standard method on Enumerable that always returns an array. Implementing "map" in the functional meaning of it violates the Rubyists's expectations. Implementing it in the Ruby way violates the FP-er's expectations.

At first I wanted Either to extend Enumerable, but then that was too far wrong. Bringing in Ruby's version of map was not acceptable. I settled for a different method name, without the conflicting meanings. (transform, as seen in Guava's collections for Java.)

What is your thought on conflicting expectations between Rubyists and FP? And on FP terms in general - as a longtime Java dev I find "map" confusing anyway. In Java a map is a dictionary.

Why did you use "select" for filter?

What's your background?

and why "Prefer blocks to lambda/Procs"?

Jessica

On Sun, Oct 20, 2013 at 12:54 PM, Marc Siegel notifications@github.comwrote:

Hi Jessi,

I like what you are doing here, and wondered if you'd be interested in discussing combining some of these ideas with the Rumonade library.

(My name is Marc, and I also work in both the Ruby/Scala worlds)

If you'd like, you can reach me via email at marc@usainnov.com.

Regards, -Marc

— Reply to this email directly or view it on GitHub< https://github.com/jessitron/fp4rd/issues/1> .

— Reply to this email directly or view it on GitHubhttps://github.com/jessitron/fp4rd/issues/1#issuecomment-26682213 .

Marc Siegel Technology Specialist American Technology Innovations

Email: marc@usainnov.com Phone: 1 (617) 399-8145 Cell: 1 (617) 223-1220 Fax: 1 (617) 334-7975

ms-ati commented 10 years ago

Hi Jessica,

I'm a big fan of the Ruby community's ability to create enormously powerful, practical software, in a way that doesn't require every contributor to be an expert in everything, but does allow experts to create useful tools for others.

I'm currently leading a team within an organization that was previously all Java, but which has transitioned to modern web apps based on the Scala Play Framework.

I personally think that pushing too hard in the direction of FP is a mistake in Ruby, and my goal with Rumonade (as opposed to other "FP in Ruby" type efforts out there) was to try to identify patterns of usage that actually gel well with how idiomatic Ruby work is done.

So, for methods named map, flat_map, and select, these method names are familiar to all Rubyists. They are present on Array and in fact on all Enumerables already. We just provide, for example, an Option class, in such a way that you just type:

[Some(1), None, Some(2), None].flatten
# => [1, 2]

...and have it just work.

In other words, I'm really trying to cherry pick patterns and concepts that are useful in Scala (of which we are already looking at a cherry-picked subset from Haskell, for the most part), and find a few that would really materially benefit Rubyists, and package those.

Does that approach appeal to you at all?

Regards, -Marc

On Mon, Oct 21, 2013 at 7:30 AM, Marc Siegel marc@usainnov.com wrote:

Great!

I'll get back to you on these points ASAP -- I'm busy running around this morning trying to work out a tourist visa issue -- but I'm glad to hear we might pool insights here!

-Marc

On Sun, Oct 20, 2013 at 4:47 PM, Jessica Kerr notifications@github.comwrote:

oh! yes! This is very interesting.

I've been looking for something like that. I started something (as far as reserving a gem name and implementing exactly what I needed for my demo) as rubyz. I'd love to talk about this!

Here's a question, something I've been mulling over. The name of the method "map" - in Ruby this is a standard method on Enumerable that always returns an array. Implementing "map" in the functional meaning of it violates the Rubyists's expectations. Implementing it in the Ruby way violates the FP-er's expectations.

At first I wanted Either to extend Enumerable, but then that was too far wrong. Bringing in Ruby's version of map was not acceptable. I settled for a different method name, without the conflicting meanings. (transform, as seen in Guava's collections for Java.)

What is your thought on conflicting expectations between Rubyists and FP? And on FP terms in general - as a longtime Java dev I find "map" confusing anyway. In Java a map is a dictionary.

Why did you use "select" for filter?

What's your background?

and why "Prefer blocks to lambda/Procs"?

Jessica

On Sun, Oct 20, 2013 at 12:54 PM, Marc Siegel notifications@github.comwrote:

Hi Jessi,

I like what you are doing here, and wondered if you'd be interested in discussing combining some of these ideas with the Rumonade library.

(My name is Marc, and I also work in both the Ruby/Scala worlds)

If you'd like, you can reach me via email at marc@usainnov.com.

Regards, -Marc

— Reply to this email directly or view it on GitHub< https://github.com/jessitron/fp4rd/issues/1> .

— Reply to this email directly or view it on GitHubhttps://github.com/jessitron/fp4rd/issues/1#issuecomment-26682213 .

Marc Siegel Technology Specialist American Technology Innovations

Email: marc@usainnov.com Phone: 1 (617) 399-8145 Cell: 1 (617) 223-1220 Fax: 1 (617) 334-7975

Marc Siegel Technology Specialist American Technology Innovations

Email: marc@usainnov.com Phone: 1 (617) 399-8145 Cell: 1 (617) 223-1220 Fax: 1 (617) 334-7975

marioaquino commented 10 years ago

That's definitely something of interest to me. :)

My name is Mario Aquino and I'm also a contributor to this repo and often collaborate w Jessica on her Ruby explorations. I'm a Ruby dev by day (formerly a Java developer) and I'm learning Scala (w Jessica's help) on the side. I'm interested in Rumonade. I had a look at the readme and will poke at it on my own. I'd be willing to contribute some time and effort as well.

ms-ati commented 10 years ago

Cool that's excellent Mario! Let me know what areas interest you. Are you working in Scala on Play Framework or other Typesafe technologies, or on Lift, Finagle, or other technologies? Are you using Scalaz?

-Marc

On Tue, Oct 22, 2013 at 6:58 PM, Mario Aquino notifications@github.comwrote:

That's definitely something of interest to me. :)

My name is Mario Aquino and I'm also a contributor to this repo and often collaborate w Jessica on her Ruby explorations. I'm a Ruby dev by day (formerly a Java developer) and I'm learning Scala (w Jessica's help) on the side. I'm interested in Rumonade. I had a look at the readme and will poke at it on my own. I'd be willing to contribute some time and effort as well.

— Reply to this email directly or view it on GitHubhttps://github.com/jessitron/fp4rd/issues/1#issuecomment-26861874 .

Marc Siegel Technology Specialist American Technology Innovations

Email: marc@usainnov.com Phone: 1 (617) 399-8145 Cell: 1 (617) 223-1220 Fax: 1 (617) 334-7975

marioaquino commented 10 years ago

Marc,

Really none of those. I've started going through the Functional Programming in Scala book as well as the coursera Scala course. My studies are under Jessica's tutelage and those other sources. I'm interested in getting more comfortable with the functional paradigm and see how it influences my design instincts.

I've been exposed to scalaz through something Jessica and I worked on together and found it quite magical. :) Play and Lift aren't things on my list to investigate yet. I'd like to learn the language well and perhaps contribute to library development with ideas that come to me from studying scala.

What drew you to scala initially? For me, it was another language to learn. I've seen enough presentations on scala that appealed to me enough to decide to learn it, despite having no practical need for it yet.

On Tuesday, October 22, 2013, Marc Siegel wrote:

Cool that's excellent Mario! Let me know what areas interest you. Are you working in Scala on Play Framework or other Typesafe technologies, or on Lift, Finagle, or other technologies? Are you using Scalaz?

-Marc

On Tue, Oct 22, 2013 at 6:58 PM, Mario Aquino <notifications@github.com<javascript:_e({}, 'cvml', 'notifications@github.com');>>wrote:

That's definitely something of interest to me. :)

My name is Mario Aquino and I'm also a contributor to this repo and often collaborate w Jessica on her Ruby explorations. I'm a Ruby dev by day (formerly a Java developer) and I'm learning Scala (w Jessica's help) on the side. I'm interested in Rumonade. I had a look at the readme and will poke at it on my own. I'd be willing to contribute some time and effort as well.

— Reply to this email directly or view it on GitHub< https://github.com/jessitron/fp4rd/issues/1#issuecomment-26861874> .

Marc Siegel Technology Specialist American Technology Innovations

Email: marc@usainnov.com <javascript:_e({}, 'cvml', 'marc@usainnov.com');> Phone: 1 (617) 399-8145 Cell: 1 (617) 223-1220 Fax: 1 (617) 334-7975

— Reply to this email directly or view it on GitHubhttps://github.com/jessitron/fp4rd/issues/1#issuecomment-26862169 .

--Mario