Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.java.programmer > #5279

Re: Call by Result

Date 2011-06-12 23:06 +0200
From Silvio <silvio@moc.com>
Newsgroups comp.lang.java.programmer
Subject Re: Call by Result
References (3 earlier) <G8nIp.1578$SG4.1543@newsfe03.iad> <slrniv461g.phi.avl@gamma.logic.tuwien.ac.at> <8CtIp.4644$PA5.4578@newsfe01.iad> <slrniv9qag.phi.avl@gamma.logic.tuwien.ac.at> <4df5290c$0$49183$e4fe514c@news.xs4all.nl>
Message-ID <4df52a61$0$49177$e4fe514c@news.xs4all.nl> (permalink)

Show all headers | View raw


On 06/12/2011 11:00 PM, Silvio wrote:
> On 06/12/2011 06:29 PM, Andreas Leitgeb wrote:
>> Arved Sandstrom<asandstrom3minus1@eastlink.ca> wrote:
>>>>> however, for two reasons. It's still the use of a return value for
>>>>> operation status, and although that's defensible, there's nothing OO
>>>>> about it - it's pure imperative programming. And were we to still
>>>>> pursue
>>>>> that approach, unfortunately Java has no elegant means for supporting
>>>>> it, unlike Haskell Maybe or Scala Option.
>>>> Not sure, what feature you're principially talking of. Is it some
>>>> kind of
>>>> syntactic sugar to further simplify code like this:
>>>> BoolStr bs = getString();
>>>> boolean b=bs.bool; String s=bs.str;
>>>
>>> In effect Maybe and Option
>>> are wrapper types just like BoolStr in your example; it's simply that
>>> Scala and Haskell have better language support for dealing with
>>> datatypes of that sort.
>>
>> Yeah, I hoped you'd give a short example of use in Haskell/Scala, to show
>> what a language could make even simpler about that.
>>
>
> Well, here is an example in Scala:
>
> Let's assume we have a getString defined as:
>
> def getString(s : String) : Option[String] =
> {
> if (s.reverse == s) Some(s.toLowerCase)
> else None
> }
>
> then it will return either Some(r) where r is a String or it will return
> None indicating failure.
>
> We could call it like this:
>
> val t : Option[String] = getString(s)
>
> or a bit shorter:
>
> val t = getString(s)
>
> and let the compiler figure out the type of t (I could have dropped the
> Option[String] return type from the getString definition the same way).
>
> Now we could use pattern matching against t:
>
> t match
> {
> case Some(r) => println("Success, return value is: " + r)
> case None => println("Failure")
> }
>
> However, since an Option[T] is a monad like most containers in Scala are
> we have shorthand notations for chaining operations on it like map,
> foreach, forall, exists etc.
>
> Example1: t.map(_.length) will return an Option[Int] which is None if t
> is None or Some(r.length) if t is Some(r)
>
> Example2: t.foreach(println(_)) will print r if t is Some(r) and do
> nothing if t is None.
>
> Pattern matching is an incredible powerfull and flexible language
> feature in Scala and clearly lays out how Option[T] can be treated. In
> practice we rarely use it on an Option because the shorthand notations
> cover almost every practical use.
>
> Gr. Silvio
>

I should have said "short cuts" instead of "shorthand notations". They 
are not notational magic but simple library functions.

Back to comp.lang.java.programmer | Previous | NextPrevious in thread | Next in thread | Find similar


Thread

Call by Result Gene Wirchenko <genew@ocis.net> - 2011-06-09 23:03 -0700
  Re: Call by Result Andreas Leitgeb <avl@gamma.logic.tuwien.ac.at> - 2011-06-10 07:33 +0000
    Re: Call by Result Nigel Wade <nmw-news@ion.le.ac.uk> - 2011-06-10 10:03 +0100
      Re: Call by Result Andreas Leitgeb <avl@gamma.logic.tuwien.ac.at> - 2011-06-10 09:47 +0000
      Re: Call by Result Arved Sandstrom <asandstrom3minus1@eastlink.ca> - 2011-06-10 08:23 -0300
        Re: Call by Result Andreas Leitgeb <avl@gamma.logic.tuwien.ac.at> - 2011-06-10 13:12 +0000
          Re: Call by Result Arved Sandstrom <asandstrom3minus1@eastlink.ca> - 2011-06-10 15:44 -0300
            Re: Call by Result Andreas Leitgeb <avl@gamma.logic.tuwien.ac.at> - 2011-06-12 16:29 +0000
              Re: Call by Result Silvio <silvio@moc.com> - 2011-06-12 23:00 +0200
                Re: Call by Result Silvio <silvio@moc.com> - 2011-06-12 23:06 +0200
                Re: Call by Result Andreas Leitgeb <avl@gamma.logic.tuwien.ac.at> - 2011-06-14 10:52 +0000
                Re: Call by Result Silvio <silvio@moc.com> - 2011-06-14 17:13 +0200
                Re: Call by Result Arved Sandstrom <asandstrom3minus1@eastlink.ca> - 2011-06-14 17:58 -0300
                Re: Call by Result Andreas Leitgeb <avl@gamma.logic.tuwien.ac.at> - 2011-06-14 21:18 +0000
                Re: Call by Result Arved Sandstrom <asandstrom3minus1@eastlink.ca> - 2011-06-14 20:14 -0300
                Re: Call by Result Arved Sandstrom <asandstrom3minus1@eastlink.ca> - 2011-06-15 07:13 -0300
                Re: Call by Result Andreas Leitgeb <avl@gamma.logic.tuwien.ac.at> - 2011-06-15 12:50 +0000
                Re: Call by Result Arved Sandstrom <asandstrom3minus1@eastlink.ca> - 2011-06-15 18:52 -0300
                Re: Call by Result lewbloch <lewbloch@gmail.com> - 2011-06-15 07:06 -0700
                Re: Call by Result Michael Wojcik <mwojcik@newsguy.com> - 2011-06-15 21:33 -0400
                Re: Call by Result Andreas Leitgeb <avl@gamma.logic.tuwien.ac.at> - 2011-06-16 11:03 +0000
                Re: Call by Result "H.J. Sander Bruggink" <sander.bruggink@uni-due.de> - 2011-06-16 13:09 +0200
                Re: Call by Result Lewis Bloch <lewisbloch@google.com> - 2011-06-16 06:59 -0700
                Re: Call by Result "John B. Matthews" <nospam@nospam.invalid> - 2011-06-16 23:14 -0400
        Re: Call by Result Gene Wirchenko <genew@ocis.net> - 2011-06-10 11:31 -0700
          Re: Call by Result Arved Sandstrom <asandstrom3minus1@eastlink.ca> - 2011-06-12 14:27 -0300
      Re: Call by Result Peter Duniho <NpOeStPeAdM@NnOwSlPiAnMk.com> - 2011-06-10 07:20 -0700
      Re: Call by Result Patricia Shanahan <pats@acm.org> - 2011-06-10 09:30 -0700
        Re: Call by Result Gene Wirchenko <genew@ocis.net> - 2011-06-10 11:44 -0700
    Re: Call by Result Gene Wirchenko <genew@ocis.net> - 2011-06-10 11:26 -0700
      Re: Call by Result Andreas Leitgeb <avl@gamma.logic.tuwien.ac.at> - 2011-06-11 15:07 +0000
        Re: Call by Result Abu Yahya <abu_yahya@invalid.com> - 2011-06-11 23:00 +0530
          Re: Call by Result Martin Gregorie <martin@address-in-sig.invalid> - 2011-06-11 19:36 +0000
            Re: Call by Result Andreas Leitgeb <avl@gamma.logic.tuwien.ac.at> - 2011-06-11 21:06 +0000
              Re: Call by Result Martin Gregorie <martin@address-in-sig.invalid> - 2011-06-12 10:53 +0000
                Re: Call by Result Peter Duniho <NpOeStPeAdM@NnOwSlPiAnMk.com> - 2011-06-12 09:28 -0700
                Re: Call by Result Martin Gregorie <martin@address-in-sig.invalid> - 2011-06-12 17:48 +0000
                Re: Call by Result Peter Duniho <NpOeStPeAdM@NnOwSlPiAnMk.com> - 2011-06-12 13:19 -0700
            Re: Call by Result Peter Duniho <NpOeStPeAdM@NnOwSlPiAnMk.com> - 2011-06-11 15:39 -0700
              Re: Call by Result Andreas Leitgeb <avl@gamma.logic.tuwien.ac.at> - 2011-06-12 11:07 +0000
                Re: Call by Result markspace <-@.> - 2011-06-12 07:02 -0700
                Re: Call by Result Peter Duniho <NpOeStPeAdM@NnOwSlPiAnMk.com> - 2011-06-12 09:39 -0700
                Re: Call by Result Andreas Leitgeb <avl@gamma.logic.tuwien.ac.at> - 2011-06-14 10:29 +0000
                Re: Call by Result Peter Duniho <NpOeStPeAdM@NnOwSlPiAnMk.com> - 2011-06-14 09:14 -0700
                Re: Call by Result markspace <-@.> - 2011-06-14 09:21 -0700
                Re: Call by Result Peter Duniho <NpOeStPeAdM@NnOwSlPiAnMk.com> - 2011-06-14 09:53 -0700
                Re: Call by Result Peter Duniho <NpOeStPeAdM@NnOwSlPiAnMk.com> - 2011-06-14 09:57 -0700
            Re: Call by Result Gene Wirchenko <genew@ocis.net> - 2011-06-12 21:44 -0700
        Re: Call by Result Gene Wirchenko <genew@ocis.net> - 2011-06-12 21:40 -0700
  Re: Call by Result Patricia Shanahan <pats@acm.org> - 2011-06-10 01:30 -0700
    Re: Call by Result Gene Wirchenko <genew@ocis.net> - 2011-06-10 11:45 -0700
  Re: Call by Result Eric Sosman <esosman@ieee-dot-org.invalid> - 2011-06-10 07:50 -0400
  Re: Call by Result Silvio <silvio@moc.com> - 2011-06-10 15:35 +0200
  Re: Call by Result Andreas Leitgeb <avl@gamma.logic.tuwien.ac.at> - 2011-06-10 13:56 +0000
  Re: Call by Result Peter Duniho <NpOeStPeAdM@NnOwSlPiAnMk.com> - 2011-06-10 07:22 -0700
    Re: Call by Result Gene Wirchenko <genew@ocis.net> - 2011-06-10 11:56 -0700
    Re: Call by Result Gene Wirchenko <genew@ocis.net> - 2011-06-10 11:57 -0700
      Re: Call by Result Patricia Shanahan <pats@acm.org> - 2011-06-10 13:50 -0700
        Re: Call by Result Gene Wirchenko <genew@ocis.net> - 2011-06-12 21:53 -0700
          Re: Call by Result Arved Sandstrom <asandstrom3minus1@eastlink.ca> - 2011-06-13 07:20 -0300
            Re: Call by Result Gene Wirchenko <genew@ocis.net> - 2011-06-13 08:08 -0700
      Re: Call by Result Wojtek <nowhere@a.com> - 2011-06-11 16:35 -0700
        Re: Call by Result Martin Gregorie <martin@address-in-sig.invalid> - 2011-06-12 11:05 +0000
        Re: Call by Result Gene Wirchenko <genew@ocis.net> - 2011-06-12 21:56 -0700
          Re: Call by Result Wojtek <nowhere@a.com> - 2011-06-14 00:40 -0700
    Re: Call by Result Andreas Leitgeb <avl@gamma.logic.tuwien.ac.at> - 2011-06-11 21:18 +0000
  Re: Call by Result markspace <-@.> - 2011-06-10 08:43 -0700
  Re: Call by Result RedGrittyBrick <RedGrittyBrick@spamweary.invalid> - 2011-06-10 17:01 +0100
    Re: Call by Result Martin Gregorie <martin@address-in-sig.invalid> - 2011-06-10 16:55 +0000
    Re: Call by Result Gene Wirchenko <genew@ocis.net> - 2011-06-10 11:59 -0700
      Re: Call by Result Wojtek <nowhere@a.com> - 2011-06-11 16:24 -0700
        Re: Call by Result Gene Wirchenko <genew@ocis.net> - 2011-06-12 21:59 -0700
          Re: Call by Result Paul Cager <paul.cager@googlemail.com> - 2011-06-13 07:53 -0700
          Re: Call by Result Wojtek <nowhere@a.com> - 2011-06-14 00:43 -0700
  Re: Call by Result Gene Wirchenko <genew@ocis.net> - 2011-06-10 11:55 -0700
  Re: Call by Result Steven Simpson <ss@domain.invalid> - 2011-06-11 09:09 +0100
  Re: Call by Result Cholo Lennon <chololennon@hotmail.com> - 2011-06-16 11:30 -0300
    Re: Call by Result Paul Cager <paul.cager@googlemail.com> - 2011-06-17 02:38 -0700
      Re: Call by Result Gene Wirchenko <genew@ocis.net> - 2011-06-17 12:06 -0700
    Re: Call by Result lewbloch <lewbloch@gmail.com> - 2011-06-17 06:40 -0700
      Re: Call by Result Cholo Lennon <chololennon@hotmail.com> - 2011-06-17 11:43 -0300

csiph-web