[nem-pl] [martin.odersky@epfl.ch: [Caml-list] [ANN] The Scala programming language]

"Paweł W. Olszta" Pawel.Olszta at adv.pl
Fri Jan 23 08:37:58 CET 2004


Kamil Skalski wrote:
> Friday 23 of January 2004 00:46, Michal Moskal wrote:
> 
>>- Pattern matching over class hierarchies unifies functional and
>>  object-oriented data access. It greatly simplifies the processing of
>>  XML trees.
> 
> 
> To jest dobre, choÄ? nie wiem co dokĹ?adnie majÄ? na myĹ?li. Instynktownie 
> wyczuwam, Ĺźe to musi byÄ? fajne.

Chyba trochę tymatch, a trochę nasz matching po wariantach (to ta część 
o XML, u nich to się nazywa case classes), jak się przyjrzeć językowi ;) 
Do tego pierwszego w tej chwili u nas musisz napisać:

match (x.GetType ().FullName) { }

U nich:

object MatchTest2 with Application {
   def match(x: Any): Any = x match {
     case 1 => "one"
     case "two" => 2
     case y: Int => "scala.Int"
   }
}

U nas jest:

match (x.GetType ().FullName) {
   | "System.Int32" when (x : int) == 1 =>
     ("one" : object)
   | "System.String" when (x : string) == "two" =>
     (2 : object)
   | "System.Int32" => "int"
}

U nas będzie (w release 0.2 raczej) zapewne tak:

tymatch (x) {
   | (int as x) when x == 1 => ("one" : object)
   | (string as x) when x == "two" => (2 : object)
   | int as x => "int"
}

Widać, że tymatch to tak naprawdę będzie makro po matchach, a jeśli 
zrobić je za pomocą System.Type::FullName to na dodatek skorzysta z 
optymalizacji matchingu po stałych (które być może będą heh).

-- 
My opinions may have changed, but not the fact
that I am right. -- Ashley Brilliant





More information about the devel-pl mailing list