This page is no longer maintained — Please continue to the home page at www.scala-lang.org

Re: Placeholder and parameters order

2 replies
Édson Rocha
Joined: 2009-03-16,
User offline. Last seen 1 year 47 weeks ago.
I'm sorry about my bad explanation.

The problem would be order of parameters:

s1 contains s2
s2 contains s1

To imitate directContainsConstraint and reverseContainsConstraint.

filter("Rocha", "oc", _ contains _) // This forges directContainsConstraint
filter("oc", "Rocha", ??? // How could I forge reverseContainsConstraint with placeholder ?

Thanks.

On Tue, Mar 24, 2009 at 14:58, Alex Boisvert <boisvert@intalio.com> wrote:
reverseContainsConstraint(_,_)


On Tue, Mar 24, 2009 at 10:49 AM, Édson Rocha <edsonpatricio@gmail.com> wrote:
Hi,

About following code.

<scala>
object Placeholder {
 
  def filter(a: String, b: String, constraint: (String, String) => Boolean) = if(constraint(a, b)) println(a + " PASSED !")
                                                           else println(a + " FAILED !")

  def directContainsConstraint(s1: String, s2: String) = s1 contains s2
 
  def reverseContainsConstraint(s1: String, s2: String) = s2 contains s1
         
  def main(args : Array[String]) {
    filter("Rocha", "oc", _ contains _) // directContainsConstraint
    filter("oc", "Rocha", reverseContainsConstraint)  // How could I use this with placeholder ?
  }
}
</scala>

Is it possible ?

I'm asking out of cusiosity. :-)

Thanks in advance

--
Édson Rocha Patrício
www.verde.com.br




--
Édson Rocha Patrício
www.verde.com.br
David Pollak
Joined: 2008-12-16,
User offline. Last seen 42 years 45 weeks ago.
Re: Placeholder and parameters order


On Tue, Mar 24, 2009 at 11:08 AM, Édson Rocha <edsonpatricio@gmail.com> wrote:
I'm sorry about my bad explanation.

The problem would be order of parameters:

s1 contains s2
s2 contains s1

To imitate directContainsConstraint and reverseContainsConstraint.

filter("Rocha", "oc", _ contains _) // This forges directContainsConstraint
filter("oc", "Rocha", ??? // How could I forge reverseContainsConstraint with placeholder ?

filter("oc", "Rocha", (a, b) => b contains a)
 

Thanks.

On Tue, Mar 24, 2009 at 14:58, Alex Boisvert <boisvert@intalio.com> wrote:
reverseContainsConstraint(_,_)


On Tue, Mar 24, 2009 at 10:49 AM, Édson Rocha <edsonpatricio@gmail.com> wrote:
Hi,

About following code.

<scala>
object Placeholder {
 
  def filter(a: String, b: String, constraint: (String, String) => Boolean) = if(constraint(a, b)) println(a + " PASSED !")
                                                           else println(a + " FAILED !")

  def directContainsConstraint(s1: String, s2: String) = s1 contains s2
 
  def reverseContainsConstraint(s1: String, s2: String) = s2 contains s1
         
  def main(args : Array[String]) {
    filter("Rocha", "oc", _ contains _) // directContainsConstraint
    filter("oc", "Rocha", reverseContainsConstraint)  // How could I use this with placeholder ?
  }
}
</scala>

Is it possible ?

I'm asking out of cusiosity. :-)

Thanks in advance

--
Édson Rocha Patrício
www.verde.com.br




--
Édson Rocha Patrício
www.verde.com.br



--
Lift, the simply functional web framework http://liftweb.net
Beginning Scala http://www.apress.com/book/view/1430219890
Follow me: http://twitter.com/dpp
Git some: http://github.com/dpp
geoff
Joined: 2008-08-20,
User offline. Last seen 1 year 25 weeks ago.
Re: Placeholder and parameters order

On Tue, Mar 24, 2009 at 03:08:37PM -0300, Édson Rocha said
> I'm sorry about my bad explanation.
>
> The problem would be order of parameters:
>
> s1 contains s2
> s2 contains s1
>
> To imitate directContainsConstraint and reverseContainsConstraint.
>
> filter("Rocha", "oc", _ contains _) // This forges directContainsConstraint
> filter("oc", "Rocha", *???*) * //* *How could I forge
> reverseContainsConstraint** with placeholder ?*

Using this additional function:

def flip[A,B,C](f: (A,B) => C): (B,A) => C = (b: B, a: A) => f(a,b)

You could do

filter("oc", "Rocha", flip(_ contains _))

This (and other functional oriented stuff) is included in scalaz
(http://code.google.com/p/scalaz/)

Copyright © 2012 École Polytechnique Fédérale de Lausanne (EPFL), Lausanne, Switzerland