<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xml:base="http://lambda-the-ultimate.org">
<channel>
 <title>Lambda the Ultimate - Scala</title>
 <link>http://lambda-the-ultimate.org/taxonomy/term/32/0</link>
 <description></description>
 <language>en</language>
<item>
 <title>Scala woes?</title>
 <link>http://lambda-the-ultimate.org/node/5034</link>
 <description>&lt;p &gt;A fork in the back? See &lt;a href=&quot;https://news.ycombinator.com/item?id=8276565&quot;&gt;discussion&lt;/a&gt; over at HN. People in the know are encouraged to shed light on the situation.&lt;/p&gt;</description>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/32">Scala</category>
 <pubDate>Sat, 06 Sep 2014 12:12:54 +0000</pubDate>
</item>
<item>
 <title>Jeeves</title>
 <link>http://lambda-the-ultimate.org/node/4892</link>
 <description>&lt;blockquote &gt;&lt;p &gt;It is increasingly important for applications to protect user privacy. Unfortunately, it is often non-trivial for programmers to enforce privacy policies. We have developed &lt;a href=&quot;http://projects.csail.mit.edu/jeeves/index.php&quot;&gt;Jeeves&lt;/a&gt; to make it easier for programmers to enforce information flow policies: policies that describe who can see what information flows through a program. Jeeves allows the programmer to write policy-agnostic programs, separately implementing policies on sensitive values from other functionality. Just like Wooster&#039;s clever valet Jeeves in Wodehouse&#039;s stories, the Jeeves runtime does the hard work, automatically enforcing the policies to show the appropriate output to each viewer.&lt;/blockquote&gt;
&lt;p &gt;From what I gather, Jeeves takes Aspect Oriented approach to privacy. This is of course not a new idea. I presume that many of the classic problems with AOP would apply to Jeeves. Likewise, using information flow analysis for handling privacy policies is not an new idea. Combining the two, however, seems like a smart move. Putting the enforcement at the run-time level makes this sound more practical than other ideas I have heard before. Still, I personally think that specifying privacy policies at the end-user level and clarifying the concept of privacy at the normative, legal and conceptual levels are more pressing concerns. Indeed, come to think of it: I don&#039;t really recall a privacy breach that was caused by a simple information flow bug. Privacy expectations are broken on purpose by many companies and major data breaches occur when big databases are shared (recall the Netflix Prize thing). Given this, I assume the major use-case is for Apps, maybe even as a technology that someone like Apple could use to enforce the compliance of third-party Apps to their privacy policies.&lt;p &gt;
I haven&#039;t looked too closely, so comments from more informed people are welcome.&lt;p &gt;
Jeeves is implemented as an embedded DSL in Scala and Python.&lt;/p&gt;</description>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/24">DSL</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/32">Scala</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/17">Software Engineering</category>
 <pubDate>Wed, 26 Feb 2014 18:33:08 +0000</pubDate>
</item>
<item>
 <title>Typesafe Activator</title>
 <link>http://lambda-the-ultimate.org/node/4728</link>
 <description>&lt;blockquote &gt;&lt;p &gt;
A new addition to the Typesafe Platform is Activator, a unique, browser-based tool that helps developers get started with Typesafe technologies quickly and easily. Getting started is a snap; just download, extract and run the executable to start building applications immediately via the easy to use wizard based interface. Common development patterns are presented through reusable templates that are linked to in-context tutorials which explain step-by-step exactly how things work. The Activator environment supports each stage of the application development lifecycle: Code, Compile, Run, and Test. At the appropriate time, Activator can generate fully-fledged projects for the leading IDE&#039;s so that application development can continue in these environments.&lt;/blockquote&gt;
&lt;p &gt;
You can download Activator &lt;a href=&quot;http://www.typesafe.com/platform/getstarted&quot;&gt;here&lt;/a&gt;.&lt;p &gt;
Truth be told, the web site has too much hype and not enough details for my tastes. Had I not known about some of the technologies behind the Typesafe Platform I wouldn&#039;t go past the first page. Hopefully this side of things will be improved. People developing in Scala might want to share their experiences in the comments.&lt;/p&gt;</description>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/32">Scala</category>
 <pubDate>Tue, 30 Apr 2013 23:30:23 +0000</pubDate>
</item>
<item>
 <title>Tool Demo: Scala-Virtualized</title>
 <link>http://lambda-the-ultimate.org/node/4522</link>
 <description>&lt;p &gt;&lt;a href=&quot;http://lampwww.epfl.ch/~phaller/doc/pepm2012.pdf&quot;&gt;Tool Demo: Scala-Virtualized&lt;/a&gt;&lt;/p&gt;
&lt;blockquote &gt;&lt;p &gt;
This paper describes Scala-Virtualized, which extends the Scala language and compiler with a small number of features that enable combining the beneï¬ts of shallow and deep embeddings of DSLs. We demonstrate our approach by showing how to embed three different domain-speciï¬c languages in Scala. Moreover, we summarize how others have been using our extended compiler in their own research and teaching. Supporting artifacts of our tool include web-based tutorials, nightly builds, and an Eclipse update site hosting an up-to-date version of the Scala IDE for Eclipse based on the Virtualized Scala compiler and standard library.
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p &gt;Scala has always had a quite good EDSL story thanks to implicits, dot- and paren-inference, and methods-as-operators. Lately there are proposals to provide it with both macros-in-the-camlp4-sense and support for multi-stage programming. This paper goes into some depth on the foundations of the latter subject.&lt;/p&gt;</description>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/24">DSL</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/8">Implementation</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/15">Meta-Programming</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/12">Object-Functional</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/32">Scala</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/29">Semantics</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/21">Type Theory</category>
 <pubDate>Sat, 26 May 2012 22:28:59 +0000</pubDate>
</item>
<item>
 <title>Effective Scala</title>
 <link>http://lambda-the-ultimate.org/node/4446</link>
 <description>&lt;p &gt;&lt;a href=&quot;http://twitter.github.com/effectivescala/&quot;&gt;It&#039;s&lt;/a&gt; from Twitter, &lt;a href=&quot;http://twitter.github.com/effectivescala/&quot;&gt;It&#039;s&lt;/a&gt; open source, &lt;a href=&quot;http://twitter.github.com/effectivescala/&quot;&gt;It&#039;s&lt;/a&gt; about Scala. What&#039;s not to like?&lt;/p&gt;</description>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/32">Scala</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/17">Software Engineering</category>
 <pubDate>Tue, 07 Feb 2012 18:41:45 +0000</pubDate>
</item>
<item>
 <title>Announcing Ozma: extending Scala with Oz concurrency</title>
 <link>http://lambda-the-ultimate.org/node/4300</link>
 <description>&lt;p &gt;I am happy to announce the release of Ozma, a conservative extension to Scala that adds Oz concurrency.  Ozma was developed as a master&#039;s thesis by SÃ©bastien Doeraene under my supervision (see the &lt;A href=&quot;https://github.com/sjrd/ozma&quot;&gt;implementation&lt;/A&gt; and the &lt;A href=&quot;http://ks365195.kimsufi.com/~sjrd/master-thesis.pdf&quot;&gt;master&#039;s thesis&lt;/A&gt;).&lt;/p&gt;
&lt;p &gt;&lt;A href=&quot;http://www.mozart-oz.org&quot;&gt;Oz&lt;/A&gt; is a multi-paradigm language that has strong support for concurrent and distributed programming.  It compiles to its own virtual machine (called Mozart) that supports dataflow synchronization and lightweight threads.&lt;/p&gt;
&lt;p &gt;&lt;A href=&quot;http://www.scala-lang.org&quot;&gt;Scala&lt;/A&gt; is a functional and object-oriented language with implementations for the JVM and .Net.  It is completely interoperable with Java.&lt;/p&gt;
&lt;p &gt;Ozma is an attempt at making the concurrency concepts of Oz available to a larger public.  Ozma implements the full Scala specification and runs on the Mozart VM.  It can therefore be seen as a new implementation of Scala.  Ozma extends Scala with dataflow variables (allowing tail-recursive list functions), declarative (deterministic) concurrency, lazy declarative concurrency, and message-passing concurrency based on ports.  Almost all the concurrency examples of &lt;A href=&quot;http://ctm.info.ucl.ac.be/&quot;&gt;CTM&lt;/A&gt; can be translated easily to Ozma.  We can say that Ozma lifts the duality of Scala, namely the combination of functional and object styles, to concurrent programming.&lt;/p&gt;</description>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/32">Scala</category>
 <pubDate>Sun, 26 Jun 2011 13:06:10 +0000</pubDate>
</item>
<item>
 <title>Scala Team Wins ERC Grant</title>
 <link>http://lambda-the-ultimate.org/node/4178</link>
 <description>&lt;blockquote &gt;&lt;p &gt;
The Scala research group at EPFL is excited to announce that they have won a 5 year European Research Grant of over 2.3 million Euros to tackle the &quot;Popular Parallel Programming&quot; challenge. This means that the Scala team will nearly double in size to pursue a truly promising way for industry to harness the parallel processing power of the ever increasing number of cores available on each chip.&lt;/p&gt;
&lt;p &gt;As you can see from a synopsis of the proposal, Scala will be providing the essential mechanisms to allow a simpler programming model for common problems that benefit from parallel processing. The principal innovation is to use &quot;language virtualization&quot;, combining polymorphic embeddings with domain-specific optimizations in a staged compilation process.
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p &gt;&lt;a href=&quot;http://www.scala-lang.org/node/8579&quot;&gt;This&lt;/a&gt; may yet lead to very interesting developments.&lt;/p&gt;</description>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/16">Parallel/Distributed</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/32">Scala</category>
 <pubDate>Mon, 10 Jan 2011 15:13:42 +0000</pubDate>
</item>
<item>
 <title>Type Classes as Objects and Implicits</title>
 <link>http://lambda-the-ultimate.org/node/4039</link>
 <description>&lt;p &gt;&lt;a href=&quot;http://ropas.snu.ac.kr/~bruno/papers/TypeClasses.pdf&quot;&gt;Type Classes as Objects and Implicits&lt;/a&gt;&lt;/p&gt;
&lt;blockquote &gt;&lt;p &gt;
&lt;em &gt;Type classes&lt;/em&gt; were originally developed in Haskell as a disciplined alternative to ad-hoc polymorphism. Type classes have been shown to provide a type-safe solution to important challenges in software engineering and programming languages such as, for example, &lt;em &gt;retroactive extension&lt;/em&gt; of programs. They are also recognized as a good mechanism for &lt;em &gt;concept&lt;/em&gt;-based &lt;em &gt;generic programming&lt;/em&gt; and, more recently, have evolved into a mechanism for type-level computation. This paper presents a lightweight approach to type classes in object-oriented (OO) languages with generics using the CONCEPT pattern and &lt;em &gt;implicits&lt;/em&gt; (a type-directed implicit parameter passing mechanism).&lt;/p&gt;
&lt;p &gt;This paper also shows how Scalaâ€™s type system conspires with implicits to enable, and even surpass, many common extensions of the Haskell type class system, making Scala ideally suited for generic programming in the large.
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p &gt;Martin Odersky and team&#039;s design decisions around how to do type classes in a unified OO and FP language continue to bear fascinating fruit. Implicits look less and less like &quot;poor man&#039;s type classes,&quot; and more and more like an improvement upon type classes, in my opinion given a quick read of this paper.&lt;/p&gt;</description>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/8">Implementation</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/12">Object-Functional</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/32">Scala</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/21">Type Theory</category>
 <pubDate>Wed, 04 Aug 2010 22:25:48 +0000</pubDate>
</item>
<item>
 <title>Compiling Structural Types on the JVM</title>
 <link>http://lambda-the-ultimate.org/node/3998</link>
 <description>&lt;p &gt;Here&#039;s a little sausage making article for JVM language implementors.  In &lt;a href=&quot;http://infoscience.epfl.ch/record/138931/files/2009_structural.pdf&quot;&gt;Compiling Structural Types on the JVM: A Comparison of Reflective and Generative Techniques from Scalaâ€™s Perspective&lt;/a&gt;, Gilles Dubochet and Martin Odersky describe&lt;/p&gt;
&lt;blockquote &gt;&lt;p &gt;
Scalaâ€™s compilation technique of structural types for the JVM. The technique uses Java reflection and polymorphic inline caches. Performance measurements of this technique are presented and analysed. Further measurements compare Scalaâ€™s reflective technique with the â€œgenerativeâ€ technique used by Whiteoak to compile structural types. The article ends with a comparison of reflective and generative techniques for compiling structural types. It concludes that generative techniques may, in specific cases, exhibit higher performances than reflective approaches, but that reflective techniques are easier to implement and have fewer restrictions.
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p &gt;There&#039;s no discussion of the the proposed JVM &quot;&lt;a href=&quot;http://blogs.sun.com/jrose/entry/method_handles_in_a_nutshell&quot;&gt;method handles&lt;/a&gt;&quot; and whether they might be an even better solution than runtime reflection.&lt;/p&gt;
&lt;p &gt;Whiteoak was mentioned &lt;a href=&quot;http://lambda-the-ultimate.org/node/3048&quot;&gt;previously on LtU&lt;/a&gt;.&lt;/p&gt;</description>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/23">Cross language runtimes</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/8">Implementation</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/32">Scala</category>
 <pubDate>Wed, 30 Jun 2010 15:18:49 +0000</pubDate>
</item>
<item>
 <title>Scala Lift Off 2009</title>
 <link>http://lambda-the-ultimate.org/node/3269</link>
 <description>&lt;p &gt;Last year, Ehud said the only reason he missed the Scala Lift Off was because it &lt;a href=&quot;http://lambda-the-ultimate.org/node/2808#comment-41718&quot;&gt;didn&#039;t have enough marketing&lt;/a&gt;.  So this year I&#039;m spam^h^h^h^h posting it on the LtU front page.&lt;/p&gt;
&lt;blockquote &gt;&lt;p &gt;
The Scala Lift Off San Francisco will be held on Saturday, June 6th in San Francisco. This is the Saturday after JavaOne. Admission to the event is $200. If you are a full time student or faculty member, the cost is $50. We&#039;ll have hot and cold running food and beverages, improved wifi, and lots of terrific members of the Scala and Lift community.
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p &gt;Further details and registration are at the &lt;a href=&quot;http://scalaliftoff.com/index&quot;&gt;conference site.&lt;/a&gt;  I&#039;ll add comments to this topic as more information becomes available.&lt;/p&gt;</description>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/32">Scala</category>
 <pubDate>Tue, 14 Apr 2009 03:04:42 +0000</pubDate>
</item>
<item>
 <title>Communicating Scala Objects</title>
 <link>http://lambda-the-ultimate.org/node/2970</link>
 <description>&lt;p &gt;I wouldn&#039;t normally think a library is LtU material, but since this one lives at the intersection of embedded DSLs, process calculi, and a spotlight language, I think it fits: &lt;a href=&quot;http://users.comlab.ox.ac.uk/bernard.sufrin/CSO/cpa2008-cso.pdf&quot;&gt;Communicating Scala Objects&lt;/a&gt;, Bernard Sufrin, Communicating Process Architectures 2008.&lt;/p&gt;
&lt;blockquote &gt;&lt;p &gt;In this paper we introduce the core features of CSO (Communicating Scala Objects) â€“ a notationally convenient embedding of the essence of occam in a modern, generically typed, object-oriented programming language that is compiled to Java Virtual Machine (JVM) code.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p &gt;If you would like to play with it, the library can be downloaded &lt;a href=&quot;http://users.comlab.ox.ac.uk/bernard.sufrin/CSO/&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;</description>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/24">DSL</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/16">Parallel/Distributed</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/32">Scala</category>
 <pubDate>Wed, 03 Sep 2008 22:47:28 +0000</pubDate>
</item>
<item>
 <title>Generics of a Higher Kind</title>
 <link>http://lambda-the-ultimate.org/node/2579</link>
 <description>&lt;p &gt;&lt;a href=&quot;http://www.cs.kuleuven.be/~adriaan/files/genericshk/tcpoly.pdf&quot;&gt;Generics of a Higher Kind&lt;/a&gt;. Adriaan Moors, Frank Piessens, and Martin Odersky.&lt;/p&gt;
&lt;blockquote &gt;&lt;p &gt;With Java 5 and C# 2.0, first-order parametric polymorphism was introduced in mainstream object-oriented programming languages under the name of generics. Although the first-order variant of generics is very useful, it also imposes some restrictions: it is possible to abstract over a type, but the resulting type constructor cannot be abstracted over. This can lead to code duplication. We removed this restriction in Scala, by allowing type constructors as type parameters and abstract types. This paper presents the design and implementation of the resulting type constructor polymorphism. It combines type constructor polymorphism with implicit parameters to yield constructs similar to, and at times more expressive than, Haskellâ€™s constructor type classes. The paper also studies interactions with other object-oriented language constructs, and discusses the gains in expressiveness.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p &gt;Many readers will already be aware that Scala has added support for higher-kinded generics, related to Haskell&#039;s type constructor classes. I believe Scala is the first language to provide this capability in an OO &quot;generics&quot; framework. This ECOOP submission presents this work, with many practical examples.&lt;/p&gt;
&lt;p &gt;(Consider this penance for my last post...)&lt;/p&gt;</description>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/12">Object-Functional</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/32">Scala</category>
 <pubDate>Thu, 20 Dec 2007 19:54:02 +0000</pubDate>
</item>
<item>
 <title>David Pollak on lift</title>
 <link>http://lambda-the-ultimate.org/node/2536</link>
 <description>&lt;p &gt;The video and slides of David Pollak&#039;s BayFP presentation on &lt;a href=&quot;http://demo.liftweb.net/lift/&quot;&gt;lift&lt;/a&gt; are available &lt;a href=&quot;http://www.bayfp.org/blog/2007/11/09/david-pollak-on-lift-videos-slides/&quot;&gt;online&lt;/a&gt;.&lt;p &gt;
While the thrust of the talk is on lift as a web framework, you get a very nice intro to Scala along the way, and David even mentions a quick way to get a PLT PhD, for those interested in that sort of thing...&lt;br &gt;</description>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/31">Javascript</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/30">Ruby</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/32">Scala</category>
 <pubDate>Thu, 15 Nov 2007 00:03:00 +0000</pubDate>
</item>
<item>
 <title>A Real-World Use of Lift, a Scala Web Application Framework</title>
 <link>http://lambda-the-ultimate.org/node/2147</link>
 <description>&lt;p &gt;&lt;a href=&quot;http://blog.lostlake.org/index.php?/archives/45-A-real-world-use-of-lift.html#extended&quot;&gt;A Real-World Use of Lift&lt;/a&gt;&lt;/p&gt;
&lt;blockquote &gt;&lt;p &gt;
Well, &lt;i &gt;lift&lt;/i&gt; is actually being used in production. I converted a Rails app to &lt;i &gt;lift&lt;/i&gt; and it was a very interesting experience...&lt;/p&gt;
&lt;p &gt;Then we did some benchmarking.  For single request processing, the &lt;i &gt;lift&lt;/i&gt; code, running inside Tomcat, ran 4 times faster than the Rails code running inside Mongrel.  However, the CPU utilization was less than 5% in the &lt;i &gt;lift&lt;/i&gt; version, where it was 100% of 1 CPU (on a dual core machine) for the Rails version.  For multiple simultaneous requests being made from multiple machines, we&#039;re seeing better than 20x performance of the &lt;i &gt;lift&lt;/i&gt; code versus the Rails code with 5 Mongrel instances.  Once again, the &lt;i &gt;lift&lt;/i&gt; code is not using very much CPU and the Rails code is pegging both CPUs.&lt;/p&gt;
&lt;p &gt;In terms of new features, we&#039;ve been able to add new features to the &lt;i &gt;lift&lt;/i&gt; code with fewer defects than with the Rails code.  Our Rails code had 70% code coverage.  We discovered that anything shy of 95% code coverage with Rails means that type-os turn into runtime failures.  We do not have any code coverage metrics for the &lt;i &gt;lift&lt;/i&gt; code, but we have seen only 1 defect that&#039;s been checked in in the 2 weeks since we started using &lt;i &gt;lift&lt;/i&gt; (vs. an average of 1 defect per checkin with the Rails code.)&lt;/p&gt;
&lt;p &gt;So, yes, I&#039;m pimping my own framework, and yes, I&#039;m able to do with &lt;i &gt;lift&lt;/i&gt; what guys like DHH are able to do with Rails, so the comparison is, in some ways, unfair.&lt;/p&gt;
&lt;p &gt;On the other hand, Scala and &lt;i &gt;lift&lt;/i&gt; code can be as brief and expressive as Ruby code.   &lt;i &gt;lift&lt;/i&gt; offers developers amazing productivity gains vs. traditional Java web frameworks, just as Rails does.  On the other hand, &lt;i &gt;lift&lt;/i&gt; code scales much better than Rails code.  &lt;i &gt;lift&lt;/i&gt; code is type-safe and the compiler becomes your friend (this does not mean you should not write tests, but it means that your tests can focus on the algorithm rather than making sure there are no type-os in variable and method names.)
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p &gt;I &lt;em &gt;promise&lt;/em&gt; that &quot;Dave Pollak&quot; is not a pseudonym for &quot;Paul Snively.&quot;&lt;/p&gt;
&lt;p &gt;&lt;b &gt;Update:&lt;/b&gt; I guess the self-deprecating humor hasn&#039;t worked, some 400+ reads later. Although the caveat that Dave offers about trying to objectively compare his own framework with Ruby on Rails is well-taken, I think that this nevertheless is an important marker in applying a very PLT-driven language and framework, Scala and lift, to a very realistic application, especially given that it&#039;s a rewrite from a currently-popular language and framework, Ruby and Rails. We admitted proponents of static typing and weird languages are constantly being asked for this sort of thing, and while it&#039;s doubtful that this adds anything to the PLT discussion &lt;i &gt;per se&lt;/i&gt;&amp;mdash;at least until we have a chance to dig into lift and see how Scala&#039;s design uniquely supports it&amp;mdash;I thought people might find the Scala connection worth commenting on.&lt;/p&gt;</description>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/12">Object-Functional</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/32">Scala</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/17">Software Engineering</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/27">XML</category>
 <pubDate>Thu, 22 Mar 2007 16:06:24 +0000</pubDate>
</item>
<item>
 <title>Matching Objects With Patterns</title>
 <link>http://lambda-the-ultimate.org/node/1960</link>
 <description>&lt;p &gt;&lt;a href=&quot;http://lampwww.epfl.ch/~emir/written/MatchingObjectsWithPatterns-TR.pdf&quot;&gt;Matching Objects With Patterns&lt;/a&gt;. Burak Emir, Martin Odersky, and John Williams.&lt;/p&gt;
&lt;blockquote &gt;&lt;p &gt;Data in object-oriented programming is organized in a hierarchy of classes. The problem of object-oriented pattern matching is how to explore this hierarchy from the outside. This usually involves classifying objects by their run-time type, accessing their members, or determining some other characteristic of a group of objects. In this paper we compare six different pattern matching techniques: object-oriented decomposition, visitors, type-tests/typecasts, typecase, case classes, and extractors. The techniques are compared on nine criteria related to conciseness, maintainability and performance. The paper introduces case classes and extractors as two new pattern-matching methods and shows that their combination works well for all of the established criteria.&lt;/p&gt;&lt;/blockquote&gt;</description>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/12">Object-Functional</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/32">Scala</category>
 <pubDate>Thu, 04 Jan 2007 20:01:08 +0000</pubDate>
</item>
</channel>
</rss>
