<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <title>Scala Forum</title>
    <subtitle>International Forum for &lt;a href=&quot;http://www.scala-lang.org/&quot;&gt;Scala&lt;/a&gt; Developers. </subtitle>
    <link rel="self" href="http://scala-forum.org/feed.php?0,type=atom" />
    <id>http://scala-forum.org/index.php</id>
    <updated>2012-05-19T00:19:17+02:00</updated>
    <generator>Phorum 5.2.15a</generator>
    <entry>
        <title type="html">val in case class args (2 replies)</title>
        <link href="http://scala-forum.org/read.php?3,868,868#msg-868" />
        <category term="Scala Programming" />
        <published>2012-05-16T18:50:37+02:00</published>
        <updated>2012-05-18T09:32:08+02:00</updated>
        <id>http://scala-forum.org/read.php?3,868,868#msg-868</id>
        <author>
            <name>gzoller</name>
        </author>
        <summary type="html"><![CDATA[ Hello,<br />
<br />
I've seen code having val in case class args, and code that doesn't.<br />
<br />
<pre class="scala bbcode_geshi"><div class="head">Language: Scala</div><a href="http://scala-lang.org"><span class="kw1">case</span></a> <a href="http://scala-lang.org"><span class="kw1">class</span></a> Person<span class="br0">&#40;</span> name<span class="sy0">:</span>String <span class="br0">&#41;</span></pre>
vs<br />
<pre class="scala bbcode_geshi"><div class="head">Language: Scala</div><a href="http://scala-lang.org"><span class="kw1">case</span></a> <a href="http://scala-lang.org"><span class="kw1">class</span></a> Person<span class="br0">&#40;</span> <a href="http://scala-lang.org"><span class="kw1">val</span></a> name<span class="sy0">:</span>String <span class="br0">&#41;</span></pre>
<br />
<br />
What's the difference, or this this style/clarity?<br />
<br />
Thanks,<br />
Greg]]></summary>
    </entry>
    <entry>
        <title type="html">how check if jobs executed by ResizableThreadPoolScheduler has ended (no replies)</title>
        <link href="http://scala-forum.org/read.php?3,867,867#msg-867" />
        <category term="Scala Programming" />
        <published>2012-05-12T16:26:05+02:00</published>
        <updated>2012-05-12T16:26:05+02:00</updated>
        <id>http://scala-forum.org/read.php?3,867,867#msg-867</id>
        <author>
            <name>miodas007</name>
        </author>
        <summary type="html"><![CDATA[ Hi,<br />
i use ResizableThreadPoolScheduler. I invoke some execute methods on it. I wont execute some action after all jobs (invokes from ResizableThreadPoolScheduler) was ended. How i can do?]]></summary>
    </entry>
    <entry>
        <title type="html">Misconception of the Regex Engine (2 replies)</title>
        <link href="http://scala-forum.org/read.php?3,861,861#msg-861" />
        <category term="Scala Programming" />
        <published>2012-04-30T17:56:02+02:00</published>
        <updated>2012-05-02T08:30:44+02:00</updated>
        <id>http://scala-forum.org/read.php?3,861,861#msg-861</id>
        <author>
            <name>hangle</name>
        </author>
        <summary type="html"><![CDATA[ From Regex examples I have built up<br />
    a conception of the Regex engine. For<br />
    instance the metacharacter '*' is<br />
    greedy so I did not expect the following<br />
    to match two adjacent characters that<br />
    were the same, e.g., &quot;aa&quot;. I was<br />
    surprised when the match statement<br />
    found the 'a'.<br />
<br />
    val subject=&quot;xayztbaa&quot;<br />
    val regex=&quot;&quot;&quot;.*(.)\1&quot;&quot;&quot;.r<br />
    subject match {<br />
            case regex(s)=&gt; println(s)  // 'a'<br />
            case _=&gt; println(&quot;unknown&quot;)<br />
            }<br />
<br />
    Am I wrong that somehow the group expression<br />
    '(.)\1' is active at  the time that the<br />
    expression '.*' is devouring &quot;xayztbaa&quot;?<br />
<br />
    I expected the '.*' to consume that entire<br />
    string, resulting in a failed match. This<br />
    notion always had me finding a character<br />
    in the string to stop the action of a '*'<br />
    or '+' prior to a group expression.<br />
<br />
    Thanks,<br />
    Hugh Angle<br />
~                                                                               <br />
~]]></summary>
    </entry>
    <entry>
        <title type="html">What's happened to Visual Studio plugin? (no replies)</title>
        <link href="http://scala-forum.org/read.php?5,858,858#msg-858" />
        <category term="Tools" />
        <published>2012-04-27T14:51:25+02:00</published>
        <updated>2012-04-27T14:51:25+02:00</updated>
        <id>http://scala-forum.org/read.php?5,858,858#msg-858</id>
        <author>
            <name>Rich Brighto</name>
        </author>
        <summary type="html"><![CDATA[ Does anyone know what has happened to the visual studio Plugin. I can't seem to find any info since last July. Has the project been abandoned? Is there progress?]]></summary>
    </entry>
    <entry>
        <title type="html">Adding reaction to a TextField array element using swing (2 replies)</title>
        <link href="http://scala-forum.org/read.php?3,856,856#msg-856" />
        <category term="Scala Programming" />
        <published>2012-04-27T04:31:47+02:00</published>
        <updated>2012-04-30T16:32:03+02:00</updated>
        <id>http://scala-forum.org/read.php?3,856,856#msg-856</id>
        <author>
            <name>hidykong</name>
        </author>
        <summary type="html"><![CDATA[ I am using Java Swing to create a GUI in scala.<br />
I need to make an array of TextFields and need them to react separately, but for some reason it does not recognize an array element as a value.<br />
<br />
Right now I have a simplified, tester program for the textfield array<br />
<br />
//array test<br />
<pre class="scala bbcode_geshi"><div class="head">Language: Scala</div><a href="http://scala-lang.org"><span class="kw1">import</span></a> swing.<span class="sy0">_</span>
<a href="http://scala-lang.org"><span class="kw1">import</span></a> event.<span class="sy0">_</span>
&nbsp;
&nbsp;
  <a href="http://scala-lang.org"><span class="kw1">def</span></a> top <span class="sy0">=</span> <a href="http://scala-lang.org"><span class="kw1">new</span></a> MainFrame <span class="br0">&#123;</span>
    title <span class="sy0">=</span> <span class="st0">&quot;Array Tester&quot;</span>
&nbsp;
    <a href="http://scala-lang.org"><span class="kw1">object</span></a> userInput <a href="http://scala-lang.org"><span class="kw1">extends</span></a> TextField <span class="br0">&#123;</span> columns <span class="sy0">=</span> <span class="nu0">5</span> <span class="br0">&#125;</span>
	<a href="http://scala-lang.org"><span class="kw1">object</span></a> userInput2 <a href="http://scala-lang.org"><span class="kw1">extends</span></a> TextField <span class="br0">&#123;</span> columns <span class="sy0">=</span> <span class="nu0">10</span><span class="br0">&#125;</span>
	<a href="http://scala-lang.org"><span class="kw1">object</span></a> output <a href="http://scala-lang.org"><span class="kw1">extends</span></a> Label<span class="br0">&#40;</span><span class="st0">&quot; Hello, type what you want to say!  &quot;</span><span class="br0">&#41;</span>
&nbsp;
	<a href="http://scala-lang.org"><span class="kw1">val</span></a> myArray <span class="sy0">=</span> <a href="http://scala-lang.org"><span class="kw1">new</span></a> Array<span class="br0">&#91;</span>TextField<span class="br0">&#93;</span><span class="br0">&#40;</span><span class="nu0">5</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
	myArray<span class="br0">&#40;</span><span class="nu0">0</span><span class="br0">&#41;</span> <span class="sy0">=</span> <a href="http://scala-lang.org"><span class="kw1">new</span></a> TextField <span class="br0">&#123;</span>columns <span class="sy0">=</span><span class="nu0">5</span><span class="br0">&#125;</span>
&nbsp;
    contents <span class="sy0">=</span> <a href="http://scala-lang.org"><span class="kw1">new</span></a> FlowPanel <span class="br0">&#123;</span>
      contents +<span class="sy0">=</span> output
      contents +<span class="sy0">=</span> userInput
	  contents +<span class="sy0">=</span> userInput2
	  contents +<span class="sy0">=</span> myArray<span class="br0">&#40;</span><span class="nu0">0</span><span class="br0">&#41;</span>
&nbsp;
      border <span class="sy0">=</span> Swing.<span class="me1">EmptyBorder</span><span class="br0">&#40;</span><span class="nu0">15</span>, <span class="nu0">10</span>, <span class="nu0">10</span>, <span class="nu0">10</span><span class="br0">&#41;</span>
    <span class="br0">&#125;</span>
&nbsp;
	<span class="co1">//this is the part that is giving me the error. When I comment this block out, everything works.</span>
	listenTo<span class="br0">&#40;</span>myArray<span class="br0">&#40;</span><span class="nu0">0</span><span class="br0">&#41;</span><span class="br0">&#41;</span>
	reactions +<span class="sy0">=</span> <span class="br0">&#123;</span><a href="http://scala-lang.org"><span class="kw1">case</span></a> EditDone <span class="br0">&#40;</span>`myArray<span class="br0">&#40;</span><span class="nu0">0</span><span class="br0">&#41;</span>`<span class="br0">&#41;</span><span class="sy0">=&gt;</span>
		println <span class="br0">&#40;</span><span class="st0">&quot;hello&quot;</span><span class="br0">&#41;</span>
		<a href="http://scala-lang.org"><span class="kw1">val</span></a> input <span class="sy0">=</span> myArray<span class="br0">&#40;</span><span class="nu0">0</span><span class="br0">&#41;</span>.<span class="me1">text</span>
		output.<span class="me1">text</span> <span class="sy0">=</span> input
	<span class="br0">&#125;</span>
&nbsp;
    listenTo<span class="br0">&#40;</span>userInput<span class="br0">&#41;</span>
    reactions +<span class="sy0">=</span> <span class="br0">&#123;</span>
      <a href="http://scala-lang.org"><span class="kw1">case</span></a> EditDone<span class="br0">&#40;</span>`userInput`<span class="br0">&#41;</span> <span class="sy0">=&gt;</span>
        <a href="http://scala-lang.org"><span class="kw1">val</span></a> input <span class="sy0">=</span> userInput.<span class="me1">text</span>
        output.<span class="me1">text</span> <span class="sy0">=</span> input
    <span class="br0">&#125;</span>    
	listenTo<span class="br0">&#40;</span>userInput2<span class="br0">&#41;</span>
    reactions +<span class="sy0">=</span> <span class="br0">&#123;</span>
      <a href="http://scala-lang.org"><span class="kw1">case</span></a> EditDone<span class="br0">&#40;</span>`userInput2`<span class="br0">&#41;</span> <span class="sy0">=&gt;</span>
		<a href="http://scala-lang.org"><span class="kw1">val</span></a> input2 <span class="sy0">=</span> userInput2.<span class="me1">text</span>
		myArray<span class="br0">&#40;</span><span class="nu0">0</span><span class="br0">&#41;</span>.<span class="me1">text</span> <span class="sy0">=</span> input2
    <span class="br0">&#125;</span>    
&nbsp;
  <span class="br0">&#125;</span>
&nbsp;
top.<span class="me1">visible</span> <span class="sy0">=</span> <a href="http://scala-lang.org"><span class="kw1">true</span></a></pre>
<br />
The error message I get is <br />
<br />
\Scala\GUIs\arrayTest.scala:30: error: not found: value myArray(0)<br />
        reactions += {case EditDone(`myArray(0)`) =&gt;<br />
                                    ^<br />
one error found<br />
<br />
<br />
I don't get why I can manipulate the array element using other textfields but not register the array elements themselves.<br />
It would be great if I could get some hep.<br />
<br />
Thanks]]></summary>
    </entry>
    <entry>
        <title type="html">IMMEDIATE HIRE: Core Java, Scala, MongoDB Quantitative Lead Developer - (NYC) (no replies)</title>
        <link href="http://scala-forum.org/read.php?6,854,854#msg-854" />
        <category term="Jobs &amp; Project Offers" />
        <published>2012-04-05T13:37:44+02:00</published>
        <updated>2012-04-05T13:37:44+02:00</updated>
        <id>http://scala-forum.org/read.php?6,854,854#msg-854</id>
        <author>
            <name>TalentWrangler</name>
        </author>
        <summary type="html"><![CDATA[ We are currently in-search for a QUANTITATIVE DEVELOPER, for our NYC office. <br />
<i>Are you an innovative Quantitative Developer that wants to get on the ground floor of a disruptive technology? Would you like to develop a massively scalable analytics and high-throughput distributed system that provides insightful analytics that power multi-billion dollar decision making? Are you looking to make true impact to the bottom line of a growing new company?</i> We are building the next generation analytics platform for hedge funds using the latest in distributed computing and data visualization. We distill the subtle signals in large datasets to highlight the strengths and weaknesses of investment decisions, guiding investors to better results. We are growing rapidly and looking to expand our Quantitative Engineering team with the industry’s top talent. This is a young product, offering an opportunity to shape the core platform while learning the ins and outs of hedge fund investing. We approach finance with a fresh perspective, relying on the best in open source, computational algorithms, big data analysis, functional programming, and distributed computing. We are a highly skilled team of passionate, innovative, and intellectually curious engineers. We come from diverse backgrounds and share a common thirst for growth, impact by innovation, and open source participation. If it is not a core component of our competitive edge, we encourage open sourcing your work. The environment is highly collaborative and multi-disciplinary. <br />
<br />
<b>Responsibilities:</b> <br />
•	Work with R&amp;D and Product Owners to develop various analytics, pricing, and models for the platform <br />
•	Take ownership of various business initiatives showing versatility as a developer, architect, tester, analyst <br />
•	Implement ad hoc and long term products based on industry, home grown, and academic research <br />
•	Develop common toolset of quantitative functions leveraging cloud computing and distributed caching <br />
•	Become an expert in Scala, Mongo DB, and various open source libraries we use <br />
•	Create an efficient computation architecture that scales with growing data, users, and models<br />
<br />
<b>Qualifications:</b> <br />
•	Masters or PhD in a Quantitative Field: Mathematics, Statistics, Physics, Computer Science, etc <br />
•	Strong development experience and a degree in Computer Science from a competitive university program <br />
•	Strong background in the following: probability, stochastic processes, statistics, numerical methods <br />
•	Basic skills using SQL and an understanding of various NOSQL offerings (Mongo DB) <br />
•	Experience and comfort with Statistical Tools such as Matlab, R, Splus, etc. <br />
•	Understanding of distributed architecture, big data, mem caching, efficient multi-threaded computing <br />
•	Experience with Pricing, Factor Models, VaR, Performance Analytics is a plus <br />
•	Experience in the following is a plus but not required: Scala, SQL, Mongo, NoSQL, Open Source <br />
<br />
<b>Personal Traits:</b> <br />
•	High enthusiasm, high integrity, and low ego; the focus is on a strong team rather than individual stars <br />
•	Desire to pursue an deeper education in finance through courses, CFA, CAIA or MBA program <br />
<br />
If you are available and interested in this role please reply with a copy of your resume and I will reach out to you once I have had the opportunity to review it. If you are not available or interested in this this please feel free to share this opportunity within your trusted network of professionals.<br />
<br />
Thank you in advance for your time and consideration in this opportunity!<br />
<br />
Best,]]></summary>
    </entry>
    <entry>
        <title type="html">Scala and JavaFX Builders? (3 replies)</title>
        <link href="http://scala-forum.org/read.php?3,847,847#msg-847" />
        <category term="Scala Programming" />
        <published>2012-03-31T00:10:02+02:00</published>
        <updated>2012-04-02T09:47:20+02:00</updated>
        <id>http://scala-forum.org/read.php?3,847,847#msg-847</id>
        <author>
            <name>countfloyd</name>
        </author>
        <summary type="html"><![CDATA[ Hey everyone. I'm considering Scala for a new JavaFX project I'm starting and my first class was an attempt at using a builder class to create a circle. This statement has an error in Scala but not in Java:<br />
<br />
<pre class="scala bbcode_geshi"><div class="head">Language: Scala</div><a href="http://scala-lang.org"><span class="kw1">val</span></a> circle <span class="sy0">=</span> CircleBuilder.<span class="me1">create</span>.<span class="me1">centerX</span><span class="br0">&#40;</span><span class="nu0">100</span><span class="br0">&#41;</span>.<span class="me1">centerY</span><span class="br0">&#40;</span><span class="nu0">115</span><span class="br0">&#41;</span>.<span class="me1">radius</span><span class="br0">&#40;</span><span class="nu0">100</span><span class="br0">&#41;</span>.<span class="me1">build</span></pre>
<br />
<br />
The error says:<br />
<br />
<pre class="bbcode">
error: value centerY is not a member of ?0
possible cause: maybe a semicolon is missing before `value centerY'?
.centerY(115)</pre>
<br />
<br />
This is with scala 2.9.1<br />
<br />
The CircleBuilder class looks like:<br />
<br />
<pre class="java bbcode_geshi"><div class="head">Language: Java</div><span class="kw1">public</span> <span class="kw1">class</span> CircleBuilder<span class="sy0">&lt;</span>B <span class="kw1">extends</span> javafx.<span class="me1">scene</span>.<span class="me1">shape</span>.<span class="me1">CircleBuilder</span><span class="sy0">&lt;</span>B<span class="sy0">&gt;&gt;</span>  <span class="kw1">extends</span> javafx.<span class="me1">scene</span>.<span class="me1">shape</span>.<span class="me1">ShapeBuilder</span><span class="sy0">&lt;</span>B<span class="sy0">&gt;</span> <span class="kw1">implements</span> javafx.<span class="me1">util</span>.<span class="me1">Builder</span><span class="sy0">&lt;</span>javafx.<span class="me1">scene</span>.<span class="me1">shape</span>.<span class="me1">Circle</span><span class="sy0">&gt;</span></pre>
<br />
<br />
The create method looks like:<br />
<br />
<pre class="java bbcode_geshi"><div class="head">Language: Java</div><span class="kw1">public</span> <span class="kw1">static</span> javafx.<span class="me1">scene</span>.<span class="me1">shape</span>.<span class="me1">CircleBuilder</span><span class="sy0">&lt;?&gt;</span> create<span class="br0">&#40;</span><span class="br0">&#41;</span></pre>
<br />
<br />
and the centerX method looks like:<br />
<br />
<pre class="java bbcode_geshi"><div class="head">Language: Java</div><span class="kw1">public</span> B centerX<span class="br0">&#40;</span><span class="kw4">double</span> v<span class="br0">&#41;</span></pre>
<br />
<br />
Anyone else try this before?<br />
<br />
Thanks<br />
<br />
Curtis]]></summary>
    </entry>
    <entry>
        <title type="html">How to benchmarking Scala programs ? (4 replies)</title>
        <link href="http://scala-forum.org/read.php?3,842,842#msg-842" />
        <category term="Scala Programming" />
        <published>2012-03-13T17:06:26+01:00</published>
        <updated>2012-03-16T19:22:17+01:00</updated>
        <id>http://scala-forum.org/read.php?3,842,842#msg-842</id>
        <author>
            <name>Heepo</name>
        </author>
        <summary type="html"><![CDATA[ Assume that problem XYZ can be solve by two mathematical-equivalent methods -- first by matrix operation, second by iterative operation.<br />
<br />
If I write both methods in Scala, how I can estimate their computational performance.<br />
<br />
(edit) My task need performance measure in millisec. But I also like to know another aspect -- number of instruction cycles, for example.]]></summary>
    </entry>
    <entry>
        <title type="html">Java interop, generics and inner class (no replies)</title>
        <link href="http://scala-forum.org/read.php?3,840,840#msg-840" />
        <category term="Scala Programming" />
        <published>2012-03-09T13:44:53+01:00</published>
        <updated>2012-03-09T13:44:53+01:00</updated>
        <id>http://scala-forum.org/read.php?3,840,840#msg-840</id>
        <author>
            <name>yvesp</name>
        </author>
        <summary type="html"><![CDATA[ I have this java code (simplified)<br />
<br />
public class X&lt;T extends X&lt;T&gt;.Y&gt; {<br />
  public X(Class&lt;T&gt; clzz);<br />
  class Y {}<br />
}<br />
<br />
I have to extend it in scala, like in (but it doesn't work!)<br />
<br />
class XX extends X(classOf[XX#YY]) {<br />
   class YY extends Y<br />
}<br />
<br />
Does anybody knows how to do this ???<br />
his gets an illegal cyclic reference ; other ways I have tried fail too.<br />
<br />
Note : I may change part of the existing java code, but Y must remain an inner class.<br />
<br />
Thanks for any help!]]></summary>
    </entry>
    <entry>
        <title type="html">For with ending condition (1 reply)</title>
        <link href="http://scala-forum.org/read.php?3,838,838#msg-838" />
        <category term="Scala Programming" />
        <published>2012-03-07T16:09:58+01:00</published>
        <updated>2012-03-07T16:44:09+01:00</updated>
        <id>http://scala-forum.org/read.php?3,838,838#msg-838</id>
        <author>
            <name>Hrayr</name>
        </author>
        <summary type="html"><![CDATA[ Hello,<br />
<br />
<br />
How can I write<br />
<br />
for(i=0; i&lt; 10 &amp; a(i)=true; ++i) in scala ?<br />
<br />
Thank you]]></summary>
    </entry>
    <entry>
        <title type="html">How to add @unchecked to map/case (3 replies)</title>
        <link href="http://scala-forum.org/read.php?3,834,834#msg-834" />
        <category term="Scala Programming" />
        <published>2012-02-25T02:50:19+01:00</published>
        <updated>2012-02-26T10:03:33+01:00</updated>
        <id>http://scala-forum.org/read.php?3,834,834#msg-834</id>
        <author>
            <name>terasaka.k</name>
        </author>
        <summary type="html"><![CDATA[ I know adding @unchecked is the way to suppress not-exhaustive warning, but how to add it for a not explicitly written parameter of map method.<br />
<br />
I want to suppress the warning against the following code :<br />
xs.map {<br />
 case SomeCase(x) =&gt; //...<br />
 case OtherCase(x) =&gt; //...<br />
}<br />
<br />
Is there any way to suppress the warning without taking a parameter name explicitly.<br />
<br />
Thank you.]]></summary>
    </entry>
    <entry>
        <title type="html">Working with Scala (1 reply)</title>
        <link href="http://scala-forum.org/read.php?3,832,832#msg-832" />
        <category term="Scala Programming" />
        <published>2012-02-17T12:33:11+01:00</published>
        <updated>2012-02-19T10:16:46+01:00</updated>
        <id>http://scala-forum.org/read.php?3,832,832#msg-832</id>
        <author>
            <name>Amos</name>
        </author>
        <summary type="html"><![CDATA[ Hi<br />
<br />
1) I downloaded eclipse classic from eclipse.org, then I downloaded Scala IDE from [<a href="http://scala-ide.org/download/current.html" rel="nofollow" >scala-ide.org</a>] , I used 2.9 link: [<a href="http://download.scala-ide.org/releases-29/stable/site" rel="nofollow" >download.scala-ide.org</a>] . I opened eclipse and made sure everything is up to date. Then I clicked on File-&gt;New-&gt;Other. I selected Scala wizard. If I double click on Scala application, I get a popup with the following error: An error has occurred. See error log for more details. java.lang.NullPointerException , pressing &quot;next&quot; does nothing. If I double click on Scala project, it seems to work ok. What did I do wrong?<br />
<br />
2) In a nutshell, what's the difference between Scala project and Scala application?]]></summary>
    </entry>
    <entry>
        <title type="html">How to start (2 replies)</title>
        <link href="http://scala-forum.org/read.php?3,829,829#msg-829" />
        <category term="Scala Programming" />
        <published>2012-02-16T13:46:45+01:00</published>
        <updated>2012-02-16T22:26:13+01:00</updated>
        <id>http://scala-forum.org/read.php?3,829,829#msg-829</id>
        <author>
            <name>Amos</name>
        </author>
        <summary type="html"><![CDATA[ Hi<br />
<br />
For me, starting to work on a new programming language is by actually developing something and learn on the way. When developing a windows application (for example), I create a window, put some components, type some code and see it running.<br />
<br />
As I see it, Scala, like Java, is better as a server side application which means that I can't just create a new window, put some components and make them work, I need to do some general processing that means nothing except for the learning itself, for me it's a bit harder to learn a new language.<br />
<br />
I downloaded eclipse classic and am about to download and install the Scala plugin and my question would be, what now? what is the best way to start learning Scala? I'm using windows for that so is there a way to make a graphical application with some components using eclipse?<br />
<br />
I can look for some examples on the net but I prefer to get my fingers dirty, I'll learn better that way.<br />
Thanks]]></summary>
    </entry>
    <entry>
        <title type="html">Knotty Problem with abstract types (no replies)</title>
        <link href="http://scala-forum.org/read.php?3,827,827#msg-827" />
        <category term="Scala Programming" />
        <published>2012-02-15T19:59:34+01:00</published>
        <updated>2012-02-15T19:59:34+01:00</updated>
        <id>http://scala-forum.org/read.php?3,827,827#msg-827</id>
        <author>
            <name>Andreas</name>
        </author>
        <summary type="html"><![CDATA[ I am trying to define a class hierarchy where all types share a property of being appendable:<br />
<br />
<pre class="scala bbcode_geshi"><div class="head">Language: Scala</div><a href="http://scala-lang.org"><span class="kw1">object</span></a> TestAppend <span class="br0">&#123;</span>
&nbsp;
  <a href="http://scala-lang.org"><span class="kw1">trait</span></a> Appendable <span class="br0">&#123;</span>
    <a href="http://scala-lang.org"><span class="kw1">type</span></a> Self
    <a href="http://scala-lang.org"><span class="kw1">def</span></a> ++<span class="br0">&#40;</span>x<span class="sy0">:</span> Self<span class="br0">&#41;</span><span class="sy0">:</span> Self
  <span class="br0">&#125;</span>
&nbsp;
  <a href="http://scala-lang.org"><span class="kw1">trait</span></a> A <a href="http://scala-lang.org"><span class="kw1">extends</span></a> Appendable <span class="br0">&#123;</span>
    <a href="http://scala-lang.org"><span class="kw1">type</span></a> Self <span class="sy0">&lt;:</span> A
    <a href="http://scala-lang.org"><span class="kw1">def</span></a> i <span class="sy0">:</span> Int
  <span class="br0">&#125;</span>
  <a href="http://scala-lang.org"><span class="kw1">trait</span></a> B <a href="http://scala-lang.org"><span class="kw1">extends</span></a> A <span class="br0">&#123;</span>
    <a href="http://scala-lang.org"><span class="kw1">type</span></a> Self <span class="sy0">=</span> B
    <a href="http://scala-lang.org"><span class="kw1">def</span></a> s<span class="sy0">:</span> String
  <span class="br0">&#125;</span>
&nbsp;
  <a href="http://scala-lang.org"><span class="kw1">case</span></a> <a href="http://scala-lang.org"><span class="kw1">class</span></a> AImp<span class="br0">&#40;</span>i<span class="sy0">:</span> Int<span class="br0">&#41;</span> <a href="http://scala-lang.org"><span class="kw1">extends</span></a> A <span class="br0">&#123;</span>
    <a href="http://scala-lang.org"><span class="kw1">type</span></a> Self <span class="sy0">=</span> A
    <a href="http://scala-lang.org"><span class="kw1">def</span></a> ++<span class="br0">&#40;</span>a<span class="sy0">:</span> A<span class="br0">&#41;</span><span class="sy0">:</span> A <span class="sy0">=</span> AImp<span class="br0">&#40;</span>i+a.<span class="me1">i</span><span class="br0">&#41;</span>
  <span class="br0">&#125;</span>
&nbsp;
  <a href="http://scala-lang.org"><span class="kw1">case</span></a> <a href="http://scala-lang.org"><span class="kw1">class</span></a> BImp<span class="br0">&#40;</span>i<span class="sy0">:</span> Int, s<span class="sy0">:</span> String<span class="br0">&#41;</span> <a href="http://scala-lang.org"><span class="kw1">extends</span></a> B <span class="br0">&#123;</span>
    <a href="http://scala-lang.org"><span class="kw1">type</span></a> Self <span class="sy0">=</span> B
    <a href="http://scala-lang.org"><span class="kw1">def</span></a> ++<span class="br0">&#40;</span>b<span class="sy0">:</span> B<span class="br0">&#41;</span> <span class="sy0">=</span> BImp<span class="br0">&#40;</span>i+b.<span class="me1">i</span>, s+<span class="st0">&quot; &quot;</span>+b.<span class="me1">s</span><span class="br0">&#41;</span>
  <span class="br0">&#125;</span>
&nbsp;
  <a href="http://scala-lang.org"><span class="kw1">val</span></a> a1<span class="sy0">:</span> A <span class="sy0">=</span> AImp<span class="br0">&#40;</span><span class="nu0">3</span><span class="br0">&#41;</span>
  <a href="http://scala-lang.org"><span class="kw1">val</span></a> a2<span class="sy0">:</span> A <span class="sy0">=</span> AImp<span class="br0">&#40;</span><span class="nu0">2</span><span class="br0">&#41;</span>
  <a href="http://scala-lang.org"><span class="kw1">val</span></a> a <span class="sy0">=</span> a1++a2
&nbsp;
  <a href="http://scala-lang.org"><span class="kw1">val</span></a> b1<span class="sy0">:</span> B <span class="sy0">=</span> BImp<span class="br0">&#40;</span><span class="nu0">3</span>,<span class="st0">&quot;three&quot;</span><span class="br0">&#41;</span>
  <a href="http://scala-lang.org"><span class="kw1">val</span></a> b2<span class="sy0">:</span> B <span class="sy0">=</span> BImp<span class="br0">&#40;</span><span class="nu0">2</span>,<span class="st0">&quot;two&quot;</span><span class="br0">&#41;</span>
  <a href="http://scala-lang.org"><span class="kw1">val</span></a> b <span class="sy0">=</span> b1++b2
<span class="br0">&#125;</span></pre>
<br />
I have tried many different implementation, the above comes closest to working. Howerever, I still get <br />
<br />
<pre class="bbcode">
val a = a1++a2
            ^
type mismatch;  found   : TestAppend.a2.type (with underlying type TestAppend.A)  required: TestAppend.a1.Self</pre>
<br />
Now, it seems to be asking for A.Self to be concrete, but if I use &quot;type Self = A&quot; instead of &quot;type Self &lt;: A&quot;, there will be an error in the subclasses because you can apparently not override an abstract type that was concretized in a superclass.<br />
<br />
This seems like not such a big thing to ask, am I missing something?<br />
<br />
Thanks for any help,<br />
<br />
Andreas]]></summary>
    </entry>
    <entry>
        <title type="html">Understanding type aliases and trait method type parameters (2 replies)</title>
        <link href="http://scala-forum.org/read.php?3,825,825#msg-825" />
        <category term="Scala Programming" />
        <published>2012-02-15T18:46:01+01:00</published>
        <updated>2012-02-15T21:06:15+01:00</updated>
        <id>http://scala-forum.org/read.php?3,825,825#msg-825</id>
        <author>
            <name>tty0pts</name>
        </author>
        <summary type="html"><![CDATA[ I might be misunderstanding one of the following topics or both in my Scala code here:<br />
 * Type aliases<br />
 * Type parameters in trait methods<br />
<br />
I would like to understand what is wrong with my thinking so I can fix the errors I am seeing.<br />
<br />
Background: I decided to define a trait for a data access object called Dao like so:<br />
<br />
<pre class="scala bbcode_geshi"><div class="head">Language: Scala</div><a href="http://scala-lang.org"><span class="kw1">trait</span></a> Dao<span class="br0">&#91;</span>A<span class="br0">&#93;</span> <span class="br0">&#123;</span>
  <a href="http://scala-lang.org"><span class="kw1">def</span></a> insert<span class="br0">&#40;</span>model<span class="sy0">:</span> A<span class="br0">&#41;</span><span class="sy0">:</span> Int <span class="sy0">=</span> <span class="br0">&#123;</span>
    <span class="co1">// generic implementation goes here</span>
  <span class="br0">&#125;</span>
&nbsp;
  <a href="http://scala-lang.org"><span class="kw1">def</span></a> find<span class="br0">&#40;</span>id<span class="sy0">:</span> Int<span class="br0">&#41;</span><span class="sy0">:</span> A <span class="sy0">=</span> <span class="br0">&#123;</span>
    <span class="co1">// generic implementation goes here</span>
  <span class="br0">&#125;</span>
&nbsp;
  <a href="http://scala-lang.org"><span class="kw1">def</span></a> update<span class="br0">&#40;</span>model<span class="sy0">:</span> A<span class="br0">&#41;</span><span class="sy0">:</span> Int <span class="sy0">=</span> <span class="br0">&#123;</span>
    <span class="co1">// generic implementation goes here</span>
  <span class="br0">&#125;</span>
&nbsp;
  <a href="http://scala-lang.org"><span class="kw1">def</span></a> delete<span class="br0">&#40;</span>id<span class="sy0">:</span> Int<span class="br0">&#41;</span><span class="sy0">:</span> Boolean <span class="sy0">=</span> <span class="br0">&#123;</span>
    <span class="co1">// generic implementation goes here</span>
  <span class="br0">&#125;</span>
&nbsp;
  <a href="http://scala-lang.org"><span class="kw1">protected</span></a> <a href="http://scala-lang.org"><span class="kw1">def</span></a> tableName<span class="sy0">:</span> String
  <a href="http://scala-lang.org"><span class="kw1">protected</span></a> <a href="http://scala-lang.org"><span class="kw1">def</span></a> fields<span class="sy0">:</span> Seq<span class="br0">&#91;</span>String<span class="br0">&#93;</span>
  <a href="http://scala-lang.org"><span class="kw1">protected</span></a> <a href="http://scala-lang.org"><span class="kw1">def</span></a> values<span class="br0">&#91;</span>B<span class="br0">&#93;</span><span class="br0">&#40;</span>model<span class="sy0">:</span> A<span class="br0">&#41;</span><span class="sy0">:</span> B
  <a href="http://scala-lang.org"><span class="kw1">protected</span></a> <a href="http://scala-lang.org"><span class="kw1">def</span></a> toModel<span class="br0">&#40;</span>r<span class="sy0">:</span> java.<span class="me1">sql</span>.<span class="me1">ResultSet</span><span class="br0">&#41;</span><span class="sy0">:</span> A
&nbsp;
  <span class="co1">// other details like the connection setup and template strings for</span>
  <span class="co1">// insert, update, select, delete SQL queries </span>
<span class="br0">&#125;</span></pre>
<br />
Then I define an object for a specific model class to create the ModelDao definition below:<br />
<pre class="scala bbcode_geshi"><div class="head">Language: Scala</div><a href="http://scala-lang.org"><span class="kw1">object</span></a> ModelDao <a href="http://scala-lang.org"><span class="kw1">extends</span></a> Dao<span class="br0">&#91;</span>Model<span class="br0">&#93;</span> <span class="br0">&#123;</span>
  <a href="http://scala-lang.org"><span class="kw1">protected</span></a> <a href="http://scala-lang.org"><span class="kw1">val</span></a> tableName <span class="sy0">=</span> <span class="st0">&quot;models&quot;</span>
&nbsp;
  <a href="http://scala-lang.org"><span class="kw1">protected</span></a> <a href="http://scala-lang.org"><span class="kw1">val</span></a> fields <span class="sy0">=</span> Seq<span class="br0">&#40;</span><span class="st0">&quot;name&quot;</span>, <span class="st0">&quot;created_at&quot;</span><span class="br0">&#41;</span>
&nbsp;
  <span class="co1">// define other abstract methods too like toModel...  </span>
&nbsp;
  <span class="co1">// Now define a type alias called MValues</span>
  <a href="http://scala-lang.org"><span class="kw1">type</span></a> MValues <span class="sy0">=</span> Tuple2<span class="br0">&#91;</span>String, Date<span class="br0">&#93;</span>
  <a href="http://scala-lang.org"><span class="kw1">object</span></a> MValues <span class="br0">&#123;</span>
    <a href="http://scala-lang.org"><span class="kw1">def</span></a> apply<span class="br0">&#40;</span>a<span class="sy0">:</span> String, b<span class="sy0">:</span> Date<span class="br0">&#41;</span> <span class="sy0">=</span> <span class="br0">&#40;</span>a, b<span class="br0">&#41;</span>
  <span class="br0">&#125;</span>
&nbsp;
  <a href="http://scala-lang.org"><span class="kw1">protected</span></a> <a href="http://scala-lang.org"><span class="kw1">def</span></a> values<span class="br0">&#91;</span>MValues<span class="br0">&#93;</span><span class="br0">&#40;</span>model<span class="sy0">:</span> Model<span class="br0">&#41;</span><span class="sy0">:</span> MValues <span class="sy0">=</span> MValues<span class="br0">&#40;</span>model.<span class="me1">name</span>, model.<span class="me1">createdAt</span><span class="br0">&#41;</span>
<span class="br0">&#125;</span></pre>
<br />
Now I get a type mismatch:<br />
<pre class="bbcode">
  found   : (String, Date)  
  required: MValues                                                        
     MValues(                                                              
            ^</pre>
<br />
What am I doing horribly wrong and misunderstanding? Is my definition of apply for MValues inconsistent? I am using Scala 2.9.1 to compile if this matters. Any pointers appreciated.]]></summary>
    </entry>
    <entry>
        <title type="html">Swing PasswordField (2 replies)</title>
        <link href="http://scala-forum.org/read.php?3,822,822#msg-822" />
        <category term="Scala Programming" />
        <published>2012-02-14T11:43:34+01:00</published>
        <updated>2012-02-14T14:37:13+01:00</updated>
        <id>http://scala-forum.org/read.php?3,822,822#msg-822</id>
        <author>
            <name>nerobot</name>
        </author>
        <summary type="html"><![CDATA[ Hi,<br />
<br />
I'm trying to create a simple GUI with a username and password text fields. However, I seem unable to get the text from a PasswordField object. When I edit a label with <pre class="scala bbcode_geshi"><div class="head">Language: Scala</div>pass<span class="sy0">_</span>field.<span class="me1">password</span>.<span class="me1">toString</span></pre> (where pass_field is of type PasswordField) I don't get the text entered, but something along the lines of [C@7df80416 <br />
<br />
I'm quite new to Scala, so not sure what this means, or how to get around the problem, so I would be very grateful for any help. Please let me know if you need any more information.<br />
<br />
Steven]]></summary>
    </entry>
    <entry>
        <title type="html">Interactive user text field for DSL entry (no replies)</title>
        <link href="http://scala-forum.org/read.php?3,821,821#msg-821" />
        <category term="Scala Programming" />
        <published>2012-02-13T15:07:48+01:00</published>
        <updated>2012-02-13T15:07:48+01:00</updated>
        <id>http://scala-forum.org/read.php?3,821,821#msg-821</id>
        <author>
            <name>drekbour</name>
        </author>
        <summary type="html"><![CDATA[ To allow my end users to enter data validation rules, I have written a simple DSL (parsing to an AST node structure which can then be evaluated against different input data). I now wish to aid users in entering those rules therough the GUI*.<br />
In an ideal world, I'm thinking of a text area with IDE-like prompting and auto-complete.  I havn't found any examples of such behaviour so <b>does anyone have an idea how to get prompt-candidates from the DSL/AST based on an incomplete input string?</b><br />
<br />
(*) It's a Swing application but I suspect that's not the important part of this topic]]></summary>
    </entry>
    <entry>
        <title type="html">Composable Futures With Akka 2.0 (no replies)</title>
        <link href="http://scala-forum.org/read.php?3,820,820#msg-820" />
        <category term="Scala Programming" />
        <published>2012-02-06T23:39:20+01:00</published>
        <updated>2012-02-06T23:39:20+01:00</updated>
        <id>http://scala-forum.org/read.php?3,820,820#msg-820</id>
        <author>
            <name>mslinn</name>
        </author>
        <summary type="html"><![CDATA[ <b>Composable Futures With Akka 2.0</b> is intended for 'the rest of us' – Java and Scala programmers who would like to quickly learn how design and implement applications using composable futures. Practical code examples are used to teach concepts, backed up by 'just enough' theory. To learn more, please visit: [<a href="http://slinnbooks.com/books/futures/" rel="nofollow" >slinnbooks.com</a>]<br />
<br />
Mike]]></summary>
    </entry>
    <entry>
        <title type="html">go through array (or similar) from end to start (1 reply)</title>
        <link href="http://scala-forum.org/read.php?3,818,818#msg-818" />
        <category term="Scala Programming" />
        <published>2012-02-03T13:45:32+01:00</published>
        <updated>2012-02-03T18:53:23+01:00</updated>
        <id>http://scala-forum.org/read.php?3,818,818#msg-818</id>
        <author>
            <name>sammontakoja</name>
        </author>
        <summary type="html"><![CDATA[ java: for (int i=0; i&lt;=end; i++)<br />
scala: for (i &lt;- 0 until end)<br />
<br />
java: for (int i=end; i&gt;=0, i--) <br />
Are there any fancy ways to this like using similar word like &quot;end&quot;?]]></summary>
    </entry>
    <entry>
        <title type="html">Scala Guru's x5 (Contract or Perm) - Central London, Flexible Remuneration (1 reply)</title>
        <link href="http://scala-forum.org/read.php?6,814,814#msg-814" />
        <category term="Jobs &amp; Project Offers" />
        <published>2012-01-26T11:43:34+01:00</published>
        <updated>2012-03-12T17:38:55+01:00</updated>
        <id>http://scala-forum.org/read.php?6,814,814#msg-814</id>
        <author>
            <name>ScalaHunter</name>
        </author>
        <summary type="html"><![CDATA[ Are you ready to become part of the next company to revolutionise the world, like Facebook, Twitter, Google and YouTube? <br />
<br />
A Developer who is immensely passionate about Scala is required by my client, who are in the initial stages of taking the market by storm with their cutting edge, never seen before social software that has already revolutionised the industry. With the backing of technology pioneers and inventors within the 2.0 space, my client already has hundreds of the worlds most influential organisations knocking on their door. They WILL be the next big name in the social world. <br />
<br />
In trendy offices in Central London, you will join an established team of true Scala Guru's in what can only be described as 'Londons Scala Centre of Excellence' to cope with the immense demand on their product. It's likely you are passionate about getting involved in social graphs, large data sets, machine learning, new/emerging technologies and scalability (amongst other highly challenging problems!) <br />
<br />
<b>The Candidate:</b> <br />
<br />
You, the Scala Guru, will relate to the majority of the following profile: <br />
<br />
· Enthusiastic about Scala and it's capabilities <br />
· Strong development background (Ideally Java but others considered) <br />
· Comfortable with high-transactional applications/websites <br />
· Passionate about TDD and Lean methodologies (Agile/Scrum/Kanban/XP) <br />
· Extremely passionate about clean, changeable, maintainable code <br />
· Passionate about other tools and technologies, selecting the right one for the job <br />
<br />
<b>In Return:</b> <br />
<br />
You, the Scala Guru, will receive an exceptional salary and comprehensive benefits whilst being part of the next 'big thing' from an early stage. This is truly a once-in-a-lifetime opportunity to revolutionise the Web 2.0 world once again, with a company who have already established themselves in a short space of time. Don't miss out! <br />
<br />
If you believe you have the ability to excel as a Scala Guru in the most reputable team in London, please send your CV to Aaron Neale at Stott and May.<br />
<br />
<b>aaron.neale@stottandmay.com</b>]]></summary>
    </entry>
    <entry>
        <title type="html">Process not exiting after receiveWithin (no replies)</title>
        <link href="http://scala-forum.org/read.php?3,813,813#msg-813" />
        <category term="Scala Programming" />
        <published>2012-01-25T20:21:04+01:00</published>
        <updated>2012-01-25T20:21:04+01:00</updated>
        <id>http://scala-forum.org/read.php?3,813,813#msg-813</id>
        <author>
            <name>Sean Shubin</name>
        </author>
        <summary type="html"><![CDATA[ I am trying to understand why this code hangs after running.<br />
<br />
<pre class="scala bbcode_geshi"><div class="head">Language: Scala</div><a href="http://scala-lang.org"><span class="kw1">import</span></a> actors.<span class="me1">TIMEOUT</span>
<a href="http://scala-lang.org"><span class="kw1">import</span></a> actors.<span class="me1">Actor</span>.<span class="sy0">_</span>
&nbsp;
receiveWithin<span class="br0">&#40;</span><span class="nu0">10</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
  <a href="http://scala-lang.org"><span class="kw1">case</span></a> TIMEOUT <span class="sy0">=&gt;</span> println<span class="br0">&#40;</span><span class="st0">&quot;timeout 2&quot;</span><span class="br0">&#41;</span>
<span class="br0">&#125;</span>
println<span class="br0">&#40;</span><span class="st0">&quot;done&quot;</span><span class="br0">&#41;</span></pre>
<br />
Wrapping in an actor seems to exit fine, but why should this matter?<br />
<pre class="scala bbcode_geshi"><div class="head">Language: Scala</div><a href="http://scala-lang.org"><span class="kw1">import</span></a> actors.<span class="me1">TIMEOUT</span>
<a href="http://scala-lang.org"><span class="kw1">import</span></a> actors.<span class="me1">Actor</span>.<span class="sy0">_</span>
&nbsp;
actor <span class="br0">&#123;</span>
  receiveWithin<span class="br0">&#40;</span><span class="nu0">10</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
    <a href="http://scala-lang.org"><span class="kw1">case</span></a> TIMEOUT <span class="sy0">=&gt;</span> println<span class="br0">&#40;</span><span class="st0">&quot;timeout 1&quot;</span><span class="br0">&#41;</span>
  <span class="br0">&#125;</span>
<span class="br0">&#125;</span>
println<span class="br0">&#40;</span><span class="st0">&quot;done&quot;</span><span class="br0">&#41;</span></pre>
<br />
Even more preplexing, adding an actor block beforehand seems to make the code exit fine.<br />
<pre class="scala bbcode_geshi"><div class="head">Language: Scala</div><a href="http://scala-lang.org"><span class="kw1">import</span></a> actors.<span class="me1">TIMEOUT</span>
<a href="http://scala-lang.org"><span class="kw1">import</span></a> actors.<span class="me1">Actor</span>.<span class="sy0">_</span>
&nbsp;
actor <span class="br0">&#123;</span>
  receiveWithin<span class="br0">&#40;</span><span class="nu0">10</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
    <a href="http://scala-lang.org"><span class="kw1">case</span></a> TIMEOUT <span class="sy0">=&gt;</span> println<span class="br0">&#40;</span><span class="st0">&quot;timeout 1&quot;</span><span class="br0">&#41;</span>
  <span class="br0">&#125;</span>
<span class="br0">&#125;</span>
receiveWithin<span class="br0">&#40;</span><span class="nu0">10</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
  <a href="http://scala-lang.org"><span class="kw1">case</span></a> TIMEOUT <span class="sy0">=&gt;</span> println<span class="br0">&#40;</span><span class="st0">&quot;timeout 2&quot;</span><span class="br0">&#41;</span>
<span class="br0">&#125;</span>
println<span class="br0">&#40;</span><span class="st0">&quot;done&quot;</span><span class="br0">&#41;</span></pre>
<br />
Any ideas?<br />
It seems to me that all of these examples should exit normally, but the first one hangs.]]></summary>
    </entry>
    <entry>
        <title type="html">Handler pattern in scala? (7 replies)</title>
        <link href="http://scala-forum.org/read.php?3,806,806#msg-806" />
        <category term="Scala Programming" />
        <published>2012-01-22T03:58:20+01:00</published>
        <updated>2012-04-03T03:00:55+02:00</updated>
        <id>http://scala-forum.org/read.php?3,806,806#msg-806</id>
        <author>
            <name>johnlon</name>
        </author>
        <summary type="html"><![CDATA[ The following java code implements a query handler pattern I've used loads of times in java.<br />
<br />
I tried the same in scala but failed - the scala is also below.<br />
<br />
Perhaps this is misguided however I would like to understand what I'm doing wrong.<br />
<br />
In the scala code I get an error ....<br />
<br />
    //error: inferred type arguments [Nothing,MyQuery] do not conform to method execute's type parameter bounds [R,Q &lt;: Query[R]]<br />
<br />
Can anyone explain what I'm doing wrong?<br />
<br />
Thanks<br />
<br />
-------------------------------------<br />
<br />
<pre class="java bbcode_geshi"><div class="head">Language: Java</div><span class="kw1">package</span> <span class="co2">java</span><span class="sy0">;</span>
&nbsp;
<span class="co1">// interfaces</span>
&nbsp;
<span class="co1">// type parameter identifies the return type of the query</span>
<span class="kw1">interface</span> Query<span class="sy0">&lt;</span>R<span class="sy0">&gt;</span><span class="br0">&#123;</span><span class="br0">&#125;</span>
&nbsp;
<span class="co1">// exec a query returning a type compatible with the query's type param</span>
<span class="kw1">interface</span> QueryHandler<span class="sy0">&lt;</span>R, Q <span class="kw1">extends</span> Query<span class="sy0">&lt;</span>R<span class="sy0">&gt;&gt;</span> <span class="br0">&#123;</span>
    R handle<span class="br0">&#40;</span>Q query<span class="br0">&#41;</span><span class="sy0">;</span>
<span class="br0">&#125;</span>
&nbsp;
<span class="co1">// for a given query find a QueryHandler to exec it and then dispatch using that handler</span>
<span class="kw1">interface</span> QueryExecutor <span class="br0">&#123;</span>
    <span class="sy0">&lt;</span>R, Q <span class="kw1">extends</span> Query<span class="sy0">&lt;</span>R<span class="sy0">&gt;&gt;</span> R execute<span class="br0">&#40;</span>Q query<span class="br0">&#41;</span><span class="sy0">;</span>
<span class="br0">&#125;</span>
&nbsp;
<span class="co1">/// dummy impl</span>
&nbsp;
<span class="kw1">class</span> MyQuery <span class="kw1">implements</span> Query<span class="sy0">&lt;</span>String<span class="sy0">&gt;</span> <span class="br0">&#123;</span><span class="br0">&#125;</span>
&nbsp;
<span class="kw1">class</span> MyQueryHandler <span class="kw1">implements</span> QueryHandler<span class="sy0">&lt;</span>String, MyQuery<span class="sy0">&gt;</span> <span class="br0">&#123;</span>
&nbsp;
    @Override
    <span class="kw1">public</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Astring+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">String</span></a> handle<span class="br0">&#40;</span>MyQuery query<span class="br0">&#41;</span> <span class="br0">&#123;</span>
        <span class="kw1">return</span> <span class="st0">&quot;String result&quot;</span><span class="sy0">;</span>
    <span class="br0">&#125;</span>
<span class="br0">&#125;</span>
&nbsp;
&nbsp;
<span class="kw1">class</span> MyQueryExecutor <span class="kw1">implements</span> QueryExecutor <span class="br0">&#123;</span>
&nbsp;
    <span class="co1">// list of handlers</span>
    QueryHandler qh1 <span class="sy0">=</span> <span class="kw1">new</span> MyQueryHandler<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
    <span class="co1">// find handler for query and execute it</span>
    <span class="kw1">public</span> <span class="sy0">&lt;</span>R, Q <span class="kw1">extends</span> Query<span class="sy0">&lt;</span>R<span class="sy0">&gt;&gt;</span> R execute<span class="br0">&#40;</span>Q query<span class="br0">&#41;</span> <span class="br0">&#123;</span>
        <span class="kw1">if</span> <span class="br0">&#40;</span>query <span class="kw1">instanceof</span> MyQuery<span class="br0">&#41;</span> <span class="br0">&#123;</span>
            <span class="kw1">return</span> <span class="br0">&#40;</span>R<span class="br0">&#41;</span>qh1.<span class="me1">handle</span><span class="br0">&#40;</span>query<span class="br0">&#41;</span><span class="sy0">;</span>
        <span class="br0">&#125;</span>
        <span class="kw1">return</span> <span class="kw2">null</span><span class="sy0">;</span>
    <span class="br0">&#125;</span>
&nbsp;
<span class="br0">&#125;</span>
&nbsp;
&nbsp;
<span class="kw1">public</span> <span class="kw1">class</span> QueryMain <span class="br0">&#123;</span>
    <span class="kw1">public</span> <span class="kw1">static</span> <span class="kw4">void</span> main<span class="br0">&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Astring+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">String</span></a><span class="br0">&#91;</span><span class="br0">&#93;</span> arg<span class="br0">&#41;</span> <span class="br0">&#123;</span>
        MyQuery q <span class="sy0">=</span> <span class="kw1">new</span> MyQuery<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
        MyQueryExecutor qe <span class="sy0">=</span> <span class="kw1">new</span> MyQueryExecutor<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
        <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Astring+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">String</span></a> s <span class="sy0">=</span> qe.<span class="me1">execute</span><span class="br0">&#40;</span>q<span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
        <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Asystem+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span class="kw3">System</span></a>.<span class="me1">out</span>.<span class="me1">println</span><span class="br0">&#40;</span>s<span class="br0">&#41;</span><span class="sy0">;</span>
    <span class="br0">&#125;</span>
<span class="br0">&#125;</span></pre>
<br />
<br />
--------------------------------------------------------------<br />
<br />
<pre class="scala bbcode_geshi"><div class="head">Language: Scala</div><a href="http://scala-lang.org"><span class="kw1">package</span></a> scala
&nbsp;
<span class="co1">// R indicates the type this query will return</span>
<a href="http://scala-lang.org"><span class="kw1">abstract</span></a> <a href="http://scala-lang.org"><span class="kw1">class</span></a> Query<span class="br0">&#91;</span>R<span class="br0">&#93;</span>
&nbsp;
<span class="co1">// The handler for a given query returns a data type consistent with the template parameter of the Query</span>
<a href="http://scala-lang.org"><span class="kw1">trait</span></a> QueryHandler<span class="br0">&#91;</span>R, Q <span class="sy0">&lt;:</span> Query<span class="br0">&#91;</span>R<span class="br0">&#93;</span><span class="br0">&#93;</span> <span class="br0">&#123;</span>
  <a href="http://scala-lang.org"><span class="kw1">def</span></a> handle<span class="br0">&#40;</span>query<span class="sy0">:</span> Q<span class="br0">&#41;</span><span class="sy0">:</span> R<span class="sy0">;</span>
<span class="br0">&#125;</span>
&nbsp;
<span class="co1">// generic executor interface</span>
<span class="co1">// and query will be executed against the relevant query handler and the appropriate result type returned</span>
<a href="http://scala-lang.org"><span class="kw1">trait</span></a> QueryExecutor <span class="br0">&#123;</span>
  <a href="http://scala-lang.org"><span class="kw1">def</span></a> execute<span class="br0">&#91;</span>R, Q <span class="sy0">&lt;:</span> Query<span class="br0">&#91;</span>R<span class="br0">&#93;</span><span class="br0">&#93;</span><span class="br0">&#40;</span>query<span class="sy0">:</span> Q<span class="br0">&#41;</span><span class="sy0">:</span> R
<span class="br0">&#125;</span>
&nbsp;
<span class="co1">//////////////////////</span>
&nbsp;
&nbsp;
<a href="http://scala-lang.org"><span class="kw1">class</span></a> MyQuery <a href="http://scala-lang.org"><span class="kw1">extends</span></a> Query<span class="br0">&#91;</span>String<span class="br0">&#93;</span>
&nbsp;
<a href="http://scala-lang.org"><span class="kw1">class</span></a> MyQueryHandler <a href="http://scala-lang.org"><span class="kw1">extends</span></a> QueryHandler<span class="br0">&#91;</span>String, MyQuery<span class="br0">&#93;</span> <span class="br0">&#123;</span>
&nbsp;
  <span class="sy0">@</span>Override
  <a href="http://scala-lang.org"><span class="kw1">def</span></a> handle<span class="br0">&#40;</span>query<span class="sy0">:</span> MyQuery<span class="br0">&#41;</span><span class="sy0">:</span> String <span class="sy0">=</span> <span class="st0">&quot;String result&quot;</span>
<span class="br0">&#125;</span>
&nbsp;
&nbsp;
<a href="http://scala-lang.org"><span class="kw1">class</span></a> MyQueryExecutor <a href="http://scala-lang.org"><span class="kw1">extends</span></a> QueryExecutor <span class="br0">&#123;</span>
&nbsp;
  <span class="co1">// given a query , find the handler and execute it</span>
  <a href="http://scala-lang.org"><span class="kw1">def</span></a> execute<span class="br0">&#91;</span>R, Q <span class="sy0">&lt;:</span> Query<span class="br0">&#91;</span>R<span class="br0">&#93;</span><span class="br0">&#93;</span><span class="br0">&#40;</span>query<span class="sy0">:</span> Q<span class="br0">&#41;</span><span class="sy0">:</span> R <span class="sy0">=</span> <span class="br0">&#123;</span>
&nbsp;
    <a href="http://scala-lang.org"><span class="kw1">val</span></a> qh1<span class="sy0">:</span> QueryHandler<span class="br0">&#91;</span>R,Q<span class="br0">&#93;</span> <span class="sy0">=</span> <a href="http://scala-lang.org"><span class="kw1">new</span></a> MyQueryHandler<span class="br0">&#40;</span><span class="br0">&#41;</span>.<span class="me1">asInstanceOf</span><span class="br0">&#91;</span>QueryHandler<span class="br0">&#91;</span>R,Q<span class="br0">&#93;</span><span class="br0">&#93;</span><span class="sy0">;</span>
&nbsp;
    query <a href="http://scala-lang.org"><span class="kw1">match</span></a> <span class="br0">&#123;</span>
      <span class="co1">// code fails to comple without the cast asInstanceOf[R]</span>
      <a href="http://scala-lang.org"><span class="kw1">case</span></a> e<span class="sy0">:</span> MyQuery <span class="sy0">=&gt;</span> qh1.<span class="me1">handle</span><span class="br0">&#40;</span>query<span class="br0">&#41;</span>
    <span class="br0">&#125;</span>
  <span class="br0">&#125;</span>
<span class="br0">&#125;</span>
&nbsp;
&nbsp;
<a href="http://scala-lang.org"><span class="kw1">object</span></a> QueryMain <span class="br0">&#123;</span>
  <a href="http://scala-lang.org"><span class="kw1">def</span></a> main<span class="br0">&#40;</span>arg<span class="sy0">:</span> Array<span class="br0">&#91;</span>String<span class="br0">&#93;</span><span class="br0">&#41;</span> <span class="sy0">=</span> <span class="br0">&#123;</span>
    <a href="http://scala-lang.org"><span class="kw1">val</span></a> q <span class="sy0">=</span> <a href="http://scala-lang.org"><span class="kw1">new</span></a> MyQuery<span class="br0">&#40;</span><span class="br0">&#41;</span>
    <a href="http://scala-lang.org"><span class="kw1">val</span></a> qe <span class="sy0">=</span> <a href="http://scala-lang.org"><span class="kw1">new</span></a> MyQueryExecutor<span class="br0">&#40;</span><span class="br0">&#41;</span>
&nbsp;
    <span class="co1">//error: inferred type arguments [Nothing,MyQuery] do not conform to method execute's type parameter bounds [R,Q &lt;: Query[R]]</span>
    <a href="http://scala-lang.org"><span class="kw1">val</span></a> s<span class="sy0">:</span> String <span class="sy0">=</span> qe.<span class="me1">execute</span><span class="br0">&#40;</span>q<span class="br0">&#41;</span>
&nbsp;
    System.<span class="me1">out</span>.<span class="me1">println</span><span class="br0">&#40;</span>s<span class="br0">&#41;</span><span class="sy0">;</span>
  <span class="br0">&#125;</span>
<span class="br0">&#125;</span></pre>]]></summary>
    </entry>
    <entry>
        <title type="html">eclipse Juno (e4) support (no replies)</title>
        <link href="http://scala-forum.org/read.php?5,800,800#msg-800" />
        <category term="Tools" />
        <published>2012-01-16T08:36:18+01:00</published>
        <updated>2012-01-16T08:36:18+01:00</updated>
        <id>http://scala-forum.org/read.php?5,800,800#msg-800</id>
        <author>
            <name>yairogen</name>
        </author>
        <summary type="html"><![CDATA[ Does anyone if and when there will be support for scala in eclipse e4?]]></summary>
    </entry>
    <entry>
        <title type="html">NoClassDefFoundError, Selectors and dispather (no replies)</title>
        <link href="http://scala-forum.org/read.php?3,799,799#msg-799" />
        <category term="Scala Programming" />
        <published>2012-01-15T23:22:58+01:00</published>
        <updated>2012-01-15T23:22:58+01:00</updated>
        <id>http://scala-forum.org/read.php?3,799,799#msg-799</id>
        <author>
            <name>Towelie</name>
        </author>
        <summary type="html"><![CDATA[ i need to transfer channel from one abstract selevtor to another one. As i'm finishing part for already done HTTP server, i use it's arcitechure as a basis for my authorisation (authentication) center. They use akka.actor and their own dispatcher. I transfer my id of main actor and after that, while transfering channel, i send it to main class.<br />
<br />
<pre class="scala bbcode_geshi"><div class="head">Language: Scala</div><a href="http://scala-lang.org"><span class="kw1">protected</span></a> <a href="http://scala-lang.org"><span class="kw1">def</span></a> sendToMain<span class="br0">&#40;</span>conn<span class="sy0">:</span> SocksConn<span class="br0">&#41;</span>
<span class="br0">&#123;</span> 
    <a href="http://scala-lang.org"><span class="kw1">try</span></a>
    <span class="br0">&#123;</span>
        conn.<span class="me1">key</span>.<span class="me1">cancel</span><span class="br0">&#40;</span><span class="br0">&#41;</span>
        connections -<span class="sy0">=</span> conn
        select<span class="br0">&#40;</span><span class="br0">&#41;</span>
        mainActor <span class="sy0">!</span> conn.<span class="me1">channel</span>
    <span class="br0">&#125;</span>
<span class="br0">&#125;</span></pre>
<br />
But a error appears.<br />
<br />
<pre class="scala bbcode_geshi"><div class="head">Language: Scala</div>Thread <span class="br0">&#91;</span>akka<span class="sy0">:</span>event-driven<span class="sy0">:</span>dispatcher<span class="sy0">:</span>global-<span class="nu0">3</span><span class="br0">&#93;</span> <span class="br0">&#40;</span>Suspended <span class="br0">&#40;</span>exception NoClassDefFoundError<span class="br0">&#41;</span><span class="br0">&#41;</span> 
    MonitorableThread.<span class="me1">run</span><span class="br0">&#40;</span><span class="br0">&#41;</span> line<span class="sy0">:</span> <span class="nu0">186</span></pre>
<br />
Could u plz help me to find out where i made a mistake?]]></summary>
    </entry>
    <entry>
        <title type="html">Lift Webapp (no replies)</title>
        <link href="http://scala-forum.org/read.php?3,796,796#msg-796" />
        <category term="Scala Programming" />
        <published>2012-01-12T16:06:06+01:00</published>
        <updated>2012-01-12T16:06:06+01:00</updated>
        <id>http://scala-forum.org/read.php?3,796,796#msg-796</id>
        <author>
            <name>h4nnes</name>
        </author>
        <summary type="html"><![CDATA[ Hello,<br />
I am working on an Scala Webapp at the moment. It's an four connect game and working fine on the console and swing gui.<br />
<br />
I want to use the logic and so on from the files I have got already for the webapp. Therefore I created an html-File with to snippets. One is for the submit formular and one for the board and so on.<br />
<br />
My problem is, I don't know how to connect the webapp with my logic or how I can fill my array and so on.<br />
<br />
Hope someboday can help me with this. I'll attach the files.<br />
<br />
the index.html:<br />
<br />
<pre class="scala bbcode_geshi"><div class="head">Language: Scala</div><span class="sy0">&lt;!</span>DOCTYPE html PUBLIC <span class="st0">&quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot;</span> <span class="st0">&quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;</span><span class="sy0">&gt;</span>
<span class="sy0">&lt;</span>html xmlns<span class="sy0">=</span><span class="st0">&quot;http://www.w3.org/1999/xhtml&quot;</span><span class="sy0">&gt;</span>
<span class="sy0">&lt;</span>head<span class="sy0">&gt;</span>
<span class="sy0">&lt;</span>meta http-equiv<span class="sy0">=</span><span class="st0">&quot;Content-Type&quot;</span> content<span class="sy0">=</span><span class="st0">&quot;text/html; charset=utf-8&quot;</span> /<span class="sy0">&gt;</span>
<span class="sy0">&lt;</span>title<span class="sy0">&gt;</span>Vier Gewinnt<span class="sy0">&lt;</span>/title<span class="sy0">&gt;</span>
<span class="sy0">&lt;</span>/head<span class="sy0">&gt;</span>
&nbsp;
<span class="sy0">&lt;</span>lift<span class="sy0">:</span>surround <a href="http://scala-lang.org"><span class="kw1">with</span></a><span class="sy0">=</span><span class="st0">&quot;default&quot;</span> at<span class="sy0">=</span><span class="st0">&quot;content&quot;</span><span class="sy0">&gt;</span>
		<span class="sy0">&lt;</span>h2<span class="sy0">&gt;</span>Vier Gewinnt<span class="sy0">!&lt;</span>/h2<span class="sy0">&gt;</span>
    <span class="sy0">&lt;</span>div <a href="http://scala-lang.org"><span class="kw1">class</span></a><span class="sy0">=</span><span class="st0">&quot;lift:Feld&quot;</span><span class="sy0">&gt;</span> <span class="sy0">&lt;</span>/div<span class="sy0">&gt;</span>
    <span class="sy0">&lt;</span>div <a href="http://scala-lang.org"><span class="kw1">class</span></a><span class="sy0">=</span><span class="st0">&quot;lift:OnSubmit?form=post&quot;</span><span class="sy0">&gt;</span>
    <span class="sy0">&lt;</span>br/<span class="sy0">&gt;</span>
    <span class="sy0">&lt;</span>input name<span class="sy0">=</span><span class="st0">&quot;wert&quot;</span>/<span class="sy0">&gt;</span>
    <span class="sy0">&lt;</span>input <a href="http://scala-lang.org"><span class="kw1">type</span></a><span class="sy0">=</span><span class="st0">&quot;submit&quot;</span> value<span class="sy0">=</span><span class="st0">&quot;Submit&quot;</span>/<span class="sy0">&gt;</span>
    <span class="sy0">&lt;</span>/div<span class="sy0">&gt;</span>
<span class="sy0">&lt;</span>/lift<span class="sy0">:</span>surround<span class="sy0">&gt;</span>
&nbsp;
<span class="sy0">&lt;</span>body<span class="sy0">&gt;</span>
<span class="sy0">&lt;</span>/body<span class="sy0">&gt;</span>
<span class="sy0">&lt;</span>/html<span class="sy0">&gt;</span></pre>
<br />
<br />
snippet for the OnSubmit:<br />
<br />
<pre class="scala bbcode_geshi"><div class="head">Language: Scala</div><a href="http://scala-lang.org"><span class="kw1">package</span></a> lift.<span class="me1">lift</span>.<span class="me1">snippet</span>
<a href="http://scala-lang.org"><span class="kw1">import</span></a> net.<span class="me1">liftweb</span>.<span class="sy0">_</span>
<a href="http://scala-lang.org"><span class="kw1">import</span></a> http.<span class="sy0">_</span>
<a href="http://scala-lang.org"><span class="kw1">import</span></a> util.<span class="me1">Helpers</span>.<span class="sy0">_</span>
<a href="http://scala-lang.org"><span class="kw1">import</span></a> scala.<span class="me1">xml</span>.<span class="me1">NodeSeq</span>
&nbsp;
<a href="http://scala-lang.org"><span class="kw1">object</span></a> OnSubmit <span class="br0">&#123;</span>
  <a href="http://scala-lang.org"><span class="kw1">def</span></a> render <span class="sy0">=</span> <span class="br0">&#123;</span>
    <span class="co1">// define some variables to put our values into</span>
    <a href="http://scala-lang.org"><span class="kw1">var</span></a> wert <span class="sy0">=</span> <span class="nu0">0</span>
&nbsp;
    <a href="http://scala-lang.org"><span class="kw1">def</span></a> process<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
      <span class="co1">// if the age is &lt; 13, display an error</span>
      <a href="http://scala-lang.org"><span class="kw1">if</span></a> <span class="br0">&#40;</span>wert <span class="sy0">&lt;</span> <span class="nu0">0</span> || wert <span class="sy0">&gt;=</span> <span class="nu0">7</span><span class="br0">&#41;</span> S.<span class="me1">error</span><span class="br0">&#40;</span><span class="st0">&quot;Wert muss zwischen 1-7 liegen&quot;</span><span class="br0">&#41;</span>
      <a href="http://scala-lang.org"><span class="kw1">else</span></a> <span class="br0">&#123;</span>
        <span class="co1">// otherwise give the user feedback and</span>
        <span class="co1">// redirect to the home page</span>
        S.<span class="me1">notice</span><span class="br0">&#40;</span><span class="st0">&quot;Wert: &quot;</span>+wert<span class="br0">&#41;</span>
        S.<span class="me1">redirectTo</span><span class="br0">&#40;</span><span class="st0">&quot;/&quot;</span><span class="br0">&#41;</span>
      <span class="br0">&#125;</span>
    <span class="br0">&#125;</span>
    <span class="st0">&quot;name=wert&quot;</span> <span class="sy0">#&gt;</span> SHtml.<span class="me1">onSubmit</span><span class="br0">&#40;</span>s <span class="sy0">=&gt;</span> asInt<span class="br0">&#40;</span>s<span class="br0">&#41;</span>.<span class="me1">foreach</span><span class="br0">&#40;</span>wert <span class="sy0">=</span> <span class="sy0">_</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="sy0">&amp;</span>
    <span class="co1">// when the form is submitted, process the variable</span>
    <span class="st0">&quot;type=submit&quot;</span> <span class="sy0">#&gt;</span> SHtml.<span class="me1">onSubmitUnit</span><span class="br0">&#40;</span>process<span class="br0">&#41;</span>
  <span class="br0">&#125;</span>
<span class="br0">&#125;</span></pre>
<br />
<br />
snippet for the Board:<br />
<br />
package lift.lift.snippet<br />
<br />
<pre class="scala bbcode_geshi"><div class="head">Language: Scala</div><a href="http://scala-lang.org"><span class="kw1">class</span></a> Feld <span class="br0">&#123;</span>
  <a href="http://scala-lang.org"><span class="kw1">def</span></a> render <span class="sy0">=</span> <span class="br0">&#123;</span>
    <span class="sy0">&lt;</span>table border<span class="sy0">=</span><span class="st0">&quot;1&quot;</span><span class="sy0">&gt;</span>
      <span class="br0">&#123;</span>
        <a href="http://scala-lang.org"><span class="kw1">for</span></a> <span class="br0">&#40;</span>y <span class="sy0">&lt;</span>- <span class="nu0">5</span> to <span class="nu0">0</span> by -<span class="nu0">1</span><span class="br0">&#41;</span> <a href="http://scala-lang.org"><span class="kw1">yield</span></a> <span class="br0">&#123;</span>
          <span class="sy0">&lt;</span>tr<span class="sy0">&gt;</span>
            <span class="br0">&#123;</span>
              <a href="http://scala-lang.org"><span class="kw1">for</span></a> <span class="br0">&#40;</span>x <span class="sy0">&lt;</span>- <span class="nu0">0</span> to <span class="nu0">6</span><span class="br0">&#41;</span> <a href="http://scala-lang.org"><span class="kw1">yield</span></a> <span class="br0">&#123;</span>
                <span class="sy0">&lt;</span>td<span class="sy0">&gt;</span> . <span class="sy0">&lt;</span>/td<span class="sy0">&gt;</span>
              <span class="br0">&#125;</span>
            <span class="br0">&#125;</span>
          <span class="sy0">&lt;</span>/tr<span class="sy0">&gt;</span>
        <span class="br0">&#125;</span>
      <span class="br0">&#125;</span>
    <span class="sy0">&lt;</span>/table<span class="sy0">&gt;</span>
  <span class="br0">&#125;</span>
<span class="br0">&#125;</span></pre>
<br />
Logic:<br />
<br />
<pre class="scala bbcode_geshi"><div class="head">Language: Scala</div><a href="http://scala-lang.org"><span class="kw1">package</span></a> viergewinnt
&nbsp;
<a href="http://scala-lang.org"><span class="kw1">case</span></a> <a href="http://scala-lang.org"><span class="kw1">object</span></a> Naught <a href="http://scala-lang.org"><span class="kw1">extends</span></a> Coin<span class="br0">&#40;</span><span class="st0">&quot;O&quot;</span><span class="br0">&#41;</span>
<a href="http://scala-lang.org"><span class="kw1">case</span></a> <a href="http://scala-lang.org"><span class="kw1">object</span></a> Cross <a href="http://scala-lang.org"><span class="kw1">extends</span></a> Coin<span class="br0">&#40;</span><span class="st0">&quot;X&quot;</span><span class="br0">&#41;</span>
<a href="http://scala-lang.org"><span class="kw1">class</span></a> Coin<span class="br0">&#40;</span><a href="http://scala-lang.org"><span class="kw1">override</span></a> <a href="http://scala-lang.org"><span class="kw1">val</span></a> toString<span class="sy0">:</span> String<span class="br0">&#41;</span>
&nbsp;
<a href="http://scala-lang.org"><span class="kw1">trait</span></a> Spieler <span class="br0">&#123;</span>
  <a href="http://scala-lang.org"><span class="kw1">def</span></a> move<span class="br0">&#40;</span>spielfeld<span class="sy0">:</span> Spielfeld, coin<span class="sy0">:</span> Coin, io<span class="sy0">:</span> IO<span class="br0">&#41;</span> <span class="sy0">:</span> Boolean
<span class="br0">&#125;</span>
&nbsp;
<a href="http://scala-lang.org"><span class="kw1">case</span></a> <a href="http://scala-lang.org"><span class="kw1">class</span></a> Spielername<span class="br0">&#40;</span><a href="http://scala-lang.org"><span class="kw1">override</span></a> <a href="http://scala-lang.org"><span class="kw1">val</span></a> toString<span class="sy0">:</span> String<span class="br0">&#41;</span> <a href="http://scala-lang.org"><span class="kw1">extends</span></a> Spieler <span class="br0">&#123;</span>
  <span class="co1">//val scanner = new java.util.Scanner(System.in)</span>
&nbsp;
  <a href="http://scala-lang.org"><span class="kw1">def</span></a> move<span class="br0">&#40;</span>spielfeld<span class="sy0">:</span> Spielfeld, coin<span class="sy0">:</span> Coin, io<span class="sy0">:</span> IO<span class="br0">&#41;</span> <span class="sy0">=</span> io.<span class="me1">askForHumanMove</span><span class="br0">&#40;</span>spielfeld<span class="br0">&#41;</span> <a href="http://scala-lang.org"><span class="kw1">match</span></a> <span class="br0">&#123;</span>
    <a href="http://scala-lang.org"><span class="kw1">case</span></a> Some<span class="br0">&#40;</span>x<span class="br0">&#41;</span> <span class="sy0">=&gt;</span> spielfeld.<span class="me1">move</span><span class="br0">&#40;</span>x, coin<span class="br0">&#41;</span><span class="sy0">;</span> <a href="http://scala-lang.org"><span class="kw1">true</span></a>
    <a href="http://scala-lang.org"><span class="kw1">case</span></a> None <span class="sy0">=&gt;</span> <a href="http://scala-lang.org"><span class="kw1">false</span></a>                                                                           
  <span class="br0">&#125;</span>
<span class="br0">&#125;</span>
&nbsp;
<a href="http://scala-lang.org"><span class="kw1">object</span></a> VierGewinnt <span class="br0">&#123;</span>
&nbsp;
  <a href="http://scala-lang.org"><span class="kw1">def</span></a> apply<span class="br0">&#40;</span>io<span class="sy0">:</span>IO<span class="br0">&#41;</span> <span class="br0">&#123;</span>
   <a href="http://scala-lang.org"><span class="kw1">def</span></a> loop<span class="br0">&#40;</span>spieler<span class="sy0">:</span> Option<span class="br0">&#91;</span><span class="br0">&#40;</span>Spieler, Spieler<span class="br0">&#41;</span><span class="br0">&#93;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
      <a href="http://scala-lang.org"><span class="kw1">val</span></a> <span class="br0">&#40;</span>spieler1, spieler2<span class="br0">&#41;</span> <span class="sy0">=</span> spieler.<span class="me1">getOrElse</span><span class="br0">&#40;</span>io.<span class="me1">askForPlayers</span><span class="br0">&#41;</span>
      spielRunde<span class="br0">&#40;</span>spieler1, spieler2, io<span class="br0">&#41;</span>
    <span class="br0">&#125;</span>
    loop<span class="br0">&#40;</span>None<span class="br0">&#41;</span>
  <span class="br0">&#125;</span>
&nbsp;
  <a href="http://scala-lang.org"><span class="kw1">def</span></a> spielRunde<span class="br0">&#40;</span>player1<span class="sy0">:</span> Spieler, player2<span class="sy0">:</span> Spieler, io<span class="sy0">:</span>IO<span class="br0">&#41;</span> <span class="br0">&#123;</span>
&nbsp;
    <a href="http://scala-lang.org"><span class="kw1">val</span></a> spielfeld <span class="sy0">=</span>  <a href="http://scala-lang.org"><span class="kw1">new</span></a> Spielfeld<span class="br0">&#40;</span><span class="br0">&#41;</span>
&nbsp;
    <a href="http://scala-lang.org"><span class="kw1">def</span></a> play<span class="br0">&#40;</span>player<span class="sy0">:</span> Spieler<span class="br0">&#41;</span> <span class="br0">&#123;</span>
      <a href="http://scala-lang.org"><span class="kw1">val</span></a> coin <span class="sy0">=</span> <a href="http://scala-lang.org"><span class="kw1">if</span></a> <span class="br0">&#40;</span>player <span class="sy0">==</span> player1<span class="br0">&#41;</span> Cross <a href="http://scala-lang.org"><span class="kw1">else</span></a> Naught 
        io.<span class="me1">zeigeSpielfeld</span><span class="br0">&#40;</span>spielfeld<span class="br0">&#41;</span>
      <a href="http://scala-lang.org"><span class="kw1">if</span></a><span class="br0">&#40;</span>spielfeld.<span class="me1">winner</span> <span class="sy0">!=</span> None<span class="br0">&#41;</span> io.<span class="me1">announceWinner</span><span class="br0">&#40;</span>
        <a href="http://scala-lang.org"><span class="kw1">if</span></a> <span class="br0">&#40;</span>spielfeld.<span class="me1">winner</span>.<span class="me1">get</span> <span class="sy0">==</span> Cross<span class="br0">&#41;</span> player1 <a href="http://scala-lang.org"><span class="kw1">else</span></a> player2, spielfeld.<span class="me1">winner</span>.<span class="me1">get</span><span class="br0">&#41;</span>
      <a href="http://scala-lang.org"><span class="kw1">else</span></a> <span class="br0">&#123;</span>
        io.<span class="me1">announceMove</span><span class="br0">&#40;</span>player, coin<span class="br0">&#41;</span>
        <a href="http://scala-lang.org"><span class="kw1">if</span></a> <span class="br0">&#40;</span>player.<span class="me1">move</span><span class="br0">&#40;</span>spielfeld, coin, io<span class="br0">&#41;</span><span class="br0">&#41;</span> play<span class="br0">&#40;</span><a href="http://scala-lang.org"><span class="kw1">if</span></a><span class="br0">&#40;</span>player <span class="sy0">==</span> player1<span class="br0">&#41;</span> player2 <a href="http://scala-lang.org"><span class="kw1">else</span></a> player1<span class="br0">&#41;</span>
      <span class="br0">&#125;</span>
    <span class="br0">&#125;</span>
    play<span class="br0">&#40;</span>player1<span class="br0">&#41;</span>
  <span class="br0">&#125;</span>
<span class="br0">&#125;</span></pre>
<br />
<br />
And the playingboard:<br />
<br />
<pre class="scala bbcode_geshi"><div class="head">Language: Scala</div><a href="http://scala-lang.org"><span class="kw1">package</span></a> viergewinnt
&nbsp;
<a href="http://scala-lang.org"><span class="kw1">class</span></a> Spielfeld<span class="br0">&#123;</span>
&nbsp;
  <a href="http://scala-lang.org"><span class="kw1">val</span></a> array <span class="sy0">=</span> Array.<span class="me1">fill</span><span class="br0">&#40;</span><span class="nu0">7</span><span class="br0">&#41;</span><span class="br0">&#40;</span>Array.<span class="me1">fill</span><span class="br0">&#40;</span><span class="nu0">6</span><span class="br0">&#41;</span><span class="br0">&#40;</span>None<span class="sy0">:</span>Option<span class="br0">&#91;</span>Coin<span class="br0">&#93;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>
&nbsp;
  <a href="http://scala-lang.org"><span class="kw1">def</span></a> move<span class="br0">&#40;</span>x<span class="sy0">:</span>Int, coin<span class="sy0">:</span>Coin<span class="br0">&#41;</span> <span class="br0">&#123;</span>
    <a href="http://scala-lang.org"><span class="kw1">val</span></a> y <span class="sy0">=</span> array<span class="br0">&#40;</span>x<span class="br0">&#41;</span>.<span class="me1">indexOf</span><span class="br0">&#40;</span>None<span class="br0">&#41;</span>
    require<span class="br0">&#40;</span>y <span class="sy0">&gt;=</span> <span class="nu0">0</span><span class="br0">&#41;</span> 
    array<span class="br0">&#40;</span>x<span class="br0">&#41;</span><span class="br0">&#40;</span>y<span class="br0">&#41;</span> <span class="sy0">=</span> Some<span class="br0">&#40;</span>coin<span class="br0">&#41;</span>
   <span class="br0">&#125;</span>
&nbsp;
  <a href="http://scala-lang.org"><span class="kw1">def</span></a> apply<span class="br0">&#40;</span>x<span class="sy0">:</span> Int, y<span class="sy0">:</span> Int<span class="br0">&#41;</span><span class="sy0">:</span>Option<span class="br0">&#91;</span>Coin<span class="br0">&#93;</span> <span class="sy0">=</span> 
     <a href="http://scala-lang.org"><span class="kw1">if</span></a> <span class="br0">&#40;</span><span class="nu0">0</span> <span class="sy0">&lt;=</span> x <span class="sy0">&amp;&amp;</span> x <span class="sy0">&lt;</span> <span class="nu0">7</span> <span class="sy0">&amp;&amp;</span> <span class="nu0">0</span> <span class="sy0">&lt;=</span> y <span class="sy0">&amp;&amp;</span> y <span class="sy0">&lt;</span> <span class="nu0">6</span><span class="br0">&#41;</span> array<span class="br0">&#40;</span>x<span class="br0">&#41;</span><span class="br0">&#40;</span>y<span class="br0">&#41;</span>
     <a href="http://scala-lang.org"><span class="kw1">else</span></a> None
&nbsp;
  <a href="http://scala-lang.org"><span class="kw1">def</span></a> winner<span class="sy0">:</span> Option<span class="br0">&#91;</span>Coin<span class="br0">&#93;</span> <span class="sy0">=</span> winner<span class="br0">&#40;</span>Cross<span class="br0">&#41;</span>.<span class="me1">orElse</span><span class="br0">&#40;</span>winner<span class="br0">&#40;</span>Naught<span class="br0">&#41;</span><span class="br0">&#41;</span>
&nbsp;
  <a href="http://scala-lang.org"><span class="kw1">private</span></a> <a href="http://scala-lang.org"><span class="kw1">def</span></a> winner<span class="br0">&#40;</span>coin<span class="sy0">:</span>Coin<span class="br0">&#41;</span><span class="sy0">:</span>Option<span class="br0">&#91;</span>Coin<span class="br0">&#93;</span> <span class="sy0">=</span> <span class="br0">&#123;</span>
    <a href="http://scala-lang.org"><span class="kw1">val</span></a> rows <span class="sy0">=</span> <span class="br0">&#40;</span><span class="nu0">0</span> until <span class="nu0">6</span><span class="br0">&#41;</span>.<span class="me1">map</span><span class="br0">&#40;</span>y <span class="sy0">=&gt;</span> <span class="br0">&#40;</span><span class="nu0">0</span> until <span class="nu0">7</span><span class="br0">&#41;</span>.<span class="me1">map</span><span class="br0">&#40;</span> x <span class="sy0">=&gt;</span> apply<span class="br0">&#40;</span>x,y<span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>
    <a href="http://scala-lang.org"><span class="kw1">val</span></a> cols <span class="sy0">=</span> <span class="br0">&#40;</span><span class="nu0">0</span> until <span class="nu0">7</span><span class="br0">&#41;</span>.<span class="me1">map</span><span class="br0">&#40;</span>x <span class="sy0">=&gt;</span> <span class="br0">&#40;</span><span class="nu0">0</span> until <span class="nu0">6</span><span class="br0">&#41;</span>.<span class="me1">map</span><span class="br0">&#40;</span> y <span class="sy0">=&gt;</span> apply<span class="br0">&#40;</span>x,y<span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>
    <a href="http://scala-lang.org"><span class="kw1">val</span></a> dia1 <span class="sy0">=</span> <span class="br0">&#40;</span><span class="nu0">0</span> until <span class="nu0">4</span><span class="br0">&#41;</span>.<span class="me1">map</span><span class="br0">&#40;</span>x <span class="sy0">=&gt;</span> <span class="br0">&#40;</span><span class="nu0">0</span> until <span class="nu0">6</span><span class="br0">&#41;</span>.<span class="me1">map</span><span class="br0">&#40;</span> y <span class="sy0">=&gt;</span> apply<span class="br0">&#40;</span>x+y,y<span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="co1">//Diagonale von links (x=0) nach rechts (x=max 4)</span>
    <a href="http://scala-lang.org"><span class="kw1">val</span></a> dia2 <span class="sy0">=</span> <span class="br0">&#40;</span><span class="nu0">3</span> until <span class="nu0">7</span><span class="br0">&#41;</span>.<span class="me1">map</span><span class="br0">&#40;</span>x <span class="sy0">=&gt;</span> <span class="br0">&#40;</span><span class="nu0">0</span> until <span class="nu0">6</span><span class="br0">&#41;</span>.<span class="me1">map</span><span class="br0">&#40;</span> y <span class="sy0">=&gt;</span> apply<span class="br0">&#40;</span>x-y,y<span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="co1">//Diagonale von rechts (x=7) nach links (x=max 3)	</span>
&nbsp;
    <a href="http://scala-lang.org"><span class="kw1">val</span></a> slice <span class="sy0">=</span> List.<span class="me1">fill</span><span class="br0">&#40;</span><span class="nu0">4</span><span class="br0">&#41;</span><span class="br0">&#40;</span>Some<span class="br0">&#40;</span>coin<span class="br0">&#41;</span><span class="br0">&#41;</span>
    <a href="http://scala-lang.org"><span class="kw1">if</span></a><span class="br0">&#40;</span><span class="br0">&#40;</span>rows ++ cols ++ dia1 ++ dia2<span class="br0">&#41;</span>.<span class="me1">exists</span><span class="br0">&#40;</span><span class="sy0">_</span>.<span class="me1">containsSlice</span><span class="br0">&#40;</span>slice<span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> 
      Some<span class="br0">&#40;</span>coin<span class="br0">&#41;</span>
    <a href="http://scala-lang.org"><span class="kw1">else</span></a> None
  <span class="br0">&#125;</span>  
&nbsp;
  <a href="http://scala-lang.org"><span class="kw1">override</span></a> <a href="http://scala-lang.org"><span class="kw1">def</span></a> toString <span class="sy0">=</span> <span class="br0">&#123;</span>
    <a href="http://scala-lang.org"><span class="kw1">val</span></a> string <span class="sy0">=</span> <a href="http://scala-lang.org"><span class="kw1">new</span></a> StringBuilder
    <a href="http://scala-lang.org"><span class="kw1">for</span></a><span class="br0">&#40;</span>y <span class="sy0">&lt;</span>- <span class="nu0">5</span> to <span class="nu0">0</span> by -<span class="nu0">1</span><span class="sy0">;</span> x <span class="sy0">&lt;</span>- <span class="nu0">0</span> to <span class="nu0">6</span><span class="br0">&#41;</span><span class="br0">&#123;</span>
    	string.<span class="me1">append</span><span class="br0">&#40;</span>apply<span class="br0">&#40;</span>x, y<span class="br0">&#41;</span>.<span class="me1">getOrElse</span><span class="br0">&#40;</span><span class="st0">&quot;_&quot;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>
        <a href="http://scala-lang.org"><span class="kw1">if</span></a> <span class="br0">&#40;</span>x <span class="sy0">==</span> <span class="nu0">6</span><span class="br0">&#41;</span> string.<span class="me1">append</span> <span class="br0">&#40;</span><span class="st0">&quot;<span class="es0">\n</span>&quot;</span><span class="br0">&#41;</span> 
        <a href="http://scala-lang.org"><span class="kw1">else</span></a> string.<span class="me1">append</span><span class="br0">&#40;</span><span class="st0">&quot;|&quot;</span><span class="br0">&#41;</span>
    <span class="br0">&#125;</span>
    string.<span class="me1">append</span><span class="br0">&#40;</span><span class="st0">&quot;0 1 2 3 4 5 6<span class="es0">\n</span>&quot;</span><span class="br0">&#41;</span>.<span class="me1">toString</span>
  <span class="br0">&#125;</span>
<span class="br0">&#125;</span></pre>
<br />
<br />
Thank you very much!<br />
<br />
Best regards,<br />
John]]></summary>
    </entry>
    <entry>
        <title type="html">var parameter/field in the costructor! (2 replies)</title>
        <link href="http://scala-forum.org/read.php?3,795,795#msg-795" />
        <category term="Scala Programming" />
        <published>2012-01-12T12:26:07+01:00</published>
        <updated>2012-01-12T16:53:33+01:00</updated>
        <id>http://scala-forum.org/read.php?3,795,795#msg-795</id>
        <author>
            <name>Arto Wikla</name>
        </author>
        <summary type="html"><![CDATA[ Interesting:<br />
----------------------------------------------------------------------<br />
class What (private var para: Int) {<br />
  println(para);      // Prints 14, of course<br />
  para = 666          // Nasty number<br />
  println(para);      // Prints still 14! What the heck?<br />
  println(this.para); // Even this prints 14!<br />
<br />
  override def toString = &quot;para = &quot; + para<br />
}<br />
<br />
val x = new What(14) // nice number<br />
println(x)           // At last prints the 666<br />
----------------------------------------------------------------------<br />
Arto Wikla / Dept. of Computer Science / Univ. of Helsinki]]></summary>
    </entry>
    <entry>
        <title type="html">why is contains not defined in Traversable? (1 reply)</title>
        <link href="http://scala-forum.org/read.php?3,787,787#msg-787" />
        <category term="Scala Programming" />
        <published>2012-01-06T00:49:00+01:00</published>
        <updated>2012-01-06T01:40:38+01:00</updated>
        <id>http://scala-forum.org/read.php?3,787,787#msg-787</id>
        <author>
            <name>peter3484</name>
        </author>
        <summary type="html"><![CDATA[ Out of curiosity, why is the method &quot;contains&quot; only defined in Seq but not in Traversable?  The implementation is something like<br />
<pre class="scala bbcode_geshi"><div class="head">Language: Scala</div><a href="http://scala-lang.org"><span class="kw1">def</span></a> contains<span class="br0">&#40;</span>elem<span class="sy0">:</span> Any<span class="br0">&#41;</span><span class="sy0">:</span> Boolean <span class="sy0">=</span> exists <span class="br0">&#40;</span><span class="sy0">_</span> <span class="sy0">==</span> elem<span class="br0">&#41;</span></pre>
<br />
which apparently applies to Traversable as well?]]></summary>
    </entry>
    <entry>
        <title type="html">ScalaScriptEngine : A new library to dynamically compile &amp; load scala classes (2 replies)</title>
        <link href="http://scala-forum.org/read.php?4,785,785#msg-785" />
        <category term="Frameworks" />
        <published>2012-01-04T00:56:29+01:00</published>
        <updated>2012-01-06T10:51:31+01:00</updated>
        <id>http://scala-forum.org/read.php?4,785,785#msg-785</id>
        <author>
            <name>ariskk</name>
        </author>
        <summary type="html"><![CDATA[ Hi all,<br />
<br />
This library dynamically compiles scala source files and loads them as classes. Changed scala files will be recompiled and the changed class with be loaded. Multiple source paths are supported as well as compilation class path and class loading class paths (so that the scripts can load extra libraries).<br />
<br />
Classpath detection can be automatic (effectively only the source directory must be provided) or manual.<br />
<br />
Different compilation and refreshing strategies are provided to suit various purposes. <br />
<br />
home page : [<a href="http://code.google.com/p/scalascriptengine/" rel="nofollow" >code.google.com</a>]<br />
examples : [<a href="http://code.google.com/p/scalascriptengine/source/browse/#svn%2Ftrunk%2Fscalascriptengine%2Fsrc%2Ftest%2Fscala%2Fexamples" rel="nofollow" >code.google.com</a>]]]></summary>
    </entry>
    <entry>
        <title type="html">case independent of match (1 reply)</title>
        <link href="http://scala-forum.org/read.php?3,783,783#msg-783" />
        <category term="Scala Programming" />
        <published>2012-01-02T21:08:57+01:00</published>
        <updated>2012-01-02T22:51:55+01:00</updated>
        <id>http://scala-forum.org/read.php?3,783,783#msg-783</id>
        <author>
            <name>hangle</name>
        </author>
        <summary type="html"><![CDATA[ i had assumed that the 'case' statement was exclusively<br />
associated with the 'match' tag until i saw its association<br />
with Actor's 'receive' and 'react' as well as the following:<br />
<br />
           List(&quot;one&quot;, 1, &quot;two&quot;, 2) collect { case s:String=&gt; s }<br />
<br />
what other roles does 'case' play independent of 'match' ?<br />
or is there a simple rule ?]]></summary>
    </entry>
    <entry>
        <title type="html">need help on transforming function (1 reply)</title>
        <link href="http://scala-forum.org/read.php?3,767,767#msg-767" />
        <category term="Scala Programming" />
        <published>2011-12-28T11:23:02+01:00</published>
        <updated>2012-01-01T16:11:37+01:00</updated>
        <id>http://scala-forum.org/read.php?3,767,767#msg-767</id>
        <author>
            <name>heapdump</name>
        </author>
        <summary type="html"><![CDATA[ hello all,<br />
<br />
i wrote some code which helps me use scala as<br />
a scripting language in a bigger linux cluster<br />
environment. <br />
<br />
it takes a list of type A and a function in the form f: (A) =&gt; B<br />
all data in the list is processed by the function f<br />
to improve speed i use actors for parallel processing.<br />
<br />
here you can pass a list of directories for example<br />
and code in form of a function which does something<br />
in there.<br />
<br />
i tried to implement all very functional and immutable.<br />
but my function: &quot;schedule&quot; can not be optimized by<br />
the compiler and at a real usage i get a stackoverflow.<br />
i have no idea how to transform the code that the<br />
scala compiler can optimize the function into a loop.<br />
<br />
implemented in an imperative style or with mutable<br />
states this would be very easy ;-)<br />
<br />
any ideas?<br />
<br />
TIA<br />
Patrick<br />
<br />
<pre class="scala bbcode_geshi"><div class="head">Language: Scala</div><a href="http://scala-lang.org"><span class="kw1">package</span></a> org.<span class="me1">heapdump</span>.<span class="me1">cauchy</span>
&nbsp;
<a href="http://scala-lang.org"><span class="kw1">import</span></a> scala.<span class="me1">actors</span>.<span class="me1">Actor</span>
<a href="http://scala-lang.org"><span class="kw1">import</span></a> scala.<span class="me1">actors</span>.<span class="me1">Actor</span>.<span class="sy0">_</span>
<a href="http://scala-lang.org"><span class="kw1">import</span></a> scala.<span class="me1">annotation</span>.<span class="me1">tailrec</span>
&nbsp;
<span class="coMULTI">/**
 * &lt;b&gt; Taskmanager &lt;/b&gt;
 * &lt;p&gt;Threadbased parallel processing of datastructures.&lt;/p&gt;    
 */</span>
<a href="http://scala-lang.org"><span class="kw1">object</span></a> Taskmanager <span class="br0">&#123;</span>
&nbsp;
  <span class="coMULTI">/**
   * Actor message Start
   */</span>
  <a href="http://scala-lang.org"><span class="kw1">private</span></a> <a href="http://scala-lang.org"><span class="kw1">case</span></a> <a href="http://scala-lang.org"><span class="kw1">object</span></a> Start<span class="sy0">;</span>
&nbsp;
  <span class="coMULTI">/**
   * Actor message Stop
   */</span>
  <a href="http://scala-lang.org"><span class="kw1">private</span></a> <a href="http://scala-lang.org"><span class="kw1">case</span></a> <a href="http://scala-lang.org"><span class="kw1">object</span></a> Stop<span class="sy0">;</span>
&nbsp;
  <span class="coMULTI">/**
   * Abstract typed result delivered by the processing actor.
   */</span>
  <a href="http://scala-lang.org"><span class="kw1">case</span></a> <a href="http://scala-lang.org"><span class="kw1">class</span></a> Result<span class="br0">&#91;</span>A, B<span class="br0">&#93;</span><span class="br0">&#40;</span>obj<span class="sy0">:</span> A, returndata<span class="sy0">:</span> B, exectime<span class="sy0">:</span> Double<span class="br0">&#41;</span> 
&nbsp;
  <a href="http://scala-lang.org"><span class="kw1">private</span></a> <a href="http://scala-lang.org"><span class="kw1">type</span></a> ResultList<span class="br0">&#91;</span>A, B<span class="br0">&#93;</span> <span class="sy0">=</span> List<span class="br0">&#91;</span>Result<span class="br0">&#91;</span>A, B<span class="br0">&#93;</span><span class="br0">&#93;</span>
&nbsp;
  <span class="coMULTI">/**
   * The actor implementation of a processing unit (Task)
   */</span>
  <a href="http://scala-lang.org"><span class="kw1">private</span></a> <a href="http://scala-lang.org"><span class="kw1">class</span></a> TaskActor<span class="br0">&#91;</span>A, B<span class="br0">&#93;</span><span class="br0">&#40;</span>obj<span class="sy0">:</span> A, f<span class="sy0">:</span> <span class="br0">&#40;</span>A<span class="br0">&#41;</span> <span class="sy0">=&gt;</span> B<span class="br0">&#41;</span> <a href="http://scala-lang.org"><span class="kw1">extends</span></a> Actor <span class="br0">&#123;</span>
&nbsp;
    <a href="http://scala-lang.org"><span class="kw1">def</span></a> act <span class="sy0">=</span> loop <span class="br0">&#123;</span>
      react <span class="br0">&#123;</span>
        <a href="http://scala-lang.org"><span class="kw1">case</span></a> Start <span class="sy0">=&gt;</span>
          <a href="http://scala-lang.org"><span class="kw1">val</span></a> t0 <span class="sy0">=</span> System.<span class="me1">nanoTime</span>
          <a href="http://scala-lang.org"><span class="kw1">val</span></a> returndata <span class="sy0">=</span> f<span class="br0">&#40;</span>obj<span class="br0">&#41;</span>
          <a href="http://scala-lang.org"><span class="kw1">val</span></a> t1<span class="sy0">:</span> Double <span class="sy0">=</span> <span class="br0">&#40;</span>System.<span class="me1">nanoTime</span> - t0<span class="br0">&#41;</span> / <span class="nu0">1000000.0</span>
&nbsp;
          sender <span class="sy0">!</span> Result<span class="br0">&#40;</span>obj, returndata, t1<span class="br0">&#41;</span>
&nbsp;
        <a href="http://scala-lang.org"><span class="kw1">case</span></a> Stop <span class="sy0">=&gt;</span> 
          exit<span class="br0">&#40;</span><span class="br0">&#41;</span>
      <span class="br0">&#125;</span>
    <span class="br0">&#125;</span>
  <span class="br0">&#125;</span> 
&nbsp;
  <span class="coMULTI">/**
   * Companion object
   */</span>
  <a href="http://scala-lang.org"><span class="kw1">private</span></a> <a href="http://scala-lang.org"><span class="kw1">object</span></a> TaskActor <span class="br0">&#123;</span>    
    <a href="http://scala-lang.org"><span class="kw1">def</span></a> apply<span class="br0">&#91;</span>A, B<span class="br0">&#93;</span><span class="br0">&#40;</span>data<span class="sy0">:</span> A, f<span class="sy0">:</span><span class="br0">&#40;</span>A<span class="br0">&#41;</span> <span class="sy0">=&gt;</span> B<span class="br0">&#41;</span> <span class="sy0">=</span> <a href="http://scala-lang.org"><span class="kw1">new</span></a> TaskActor<span class="br0">&#40;</span>data, f<span class="br0">&#41;</span> 
  <span class="br0">&#125;</span>
&nbsp;
&nbsp;
  <span class="coMULTI">/**
   * Parallel processing of a given list of data by a function.
   * 
   * @param data A list of data
   * @param f The processing function
   * @param cachesize The size of the actor-pool (max parallel actors used)
   */</span>
  <a href="http://scala-lang.org"><span class="kw1">def</span></a> runall<span class="br0">&#91;</span>A, B<span class="br0">&#93;</span><span class="br0">&#40;</span>data<span class="sy0">:</span> List<span class="br0">&#91;</span>A<span class="br0">&#93;</span>, f<span class="sy0">:</span><span class="br0">&#40;</span>A<span class="br0">&#41;</span> <span class="sy0">=&gt;</span> B, cachesize<span class="sy0">:</span> Int<span class="br0">&#41;</span> <span class="sy0">:</span> ResultList<span class="br0">&#91;</span>A, B<span class="br0">&#93;</span> <span class="sy0">=</span> <span class="br0">&#123;</span>
&nbsp;
   <span class="co1">// @tailrec </span>
    <a href="http://scala-lang.org"><span class="kw1">def</span></a> schedule<span class="br0">&#40;</span>databuffer<span class="sy0">:</span> List<span class="br0">&#91;</span>A<span class="br0">&#93;</span>, buffer<span class="sy0">:</span> ResultList<span class="br0">&#91;</span>A, B<span class="br0">&#93;</span>, cache<span class="sy0">_</span>size<span class="sy0">:</span> Int<span class="br0">&#41;</span> <span class="sy0">:</span> ResultList<span class="br0">&#91;</span>A, B<span class="br0">&#93;</span> <span class="sy0">=</span> <span class="br0">&#123;</span>
&nbsp;
      <a href="http://scala-lang.org"><span class="kw1">if</span></a> <span class="br0">&#40;</span>buffer.<span class="me1">size</span> <span class="sy0">==</span> data.<span class="me1">size</span><span class="br0">&#41;</span> <a href="http://scala-lang.org"><span class="kw1">return</span></a> buffer
&nbsp;
      <a href="http://scala-lang.org"><span class="kw1">if</span></a> <span class="br0">&#40;</span>cache<span class="sy0">_</span>size <span class="sy0">&lt;</span> cachesize <span class="sy0">&amp;&amp;</span> databuffer.<span class="me1">size</span> <span class="sy0">&gt;</span> <span class="nu0">0</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
        <a href="http://scala-lang.org"><span class="kw1">val</span></a> ta <span class="sy0">=</span> <a href="http://scala-lang.org"><span class="kw1">new</span></a> TaskActor<span class="br0">&#40;</span>databuffer.<span class="me1">head</span>, f<span class="br0">&#41;</span>
        ta.<span class="me1">start</span>
        ta <span class="sy0">!</span> Start
        <a href="http://scala-lang.org"><span class="kw1">return</span></a> schedule<span class="br0">&#40;</span>databuffer.<span class="me1">tail</span>, buffer, cache<span class="sy0">_</span>size + <span class="nu0">1</span><span class="br0">&#41;</span>
      <span class="br0">&#125;</span>
&nbsp;
      receive <span class="br0">&#123;</span>
        <a href="http://scala-lang.org"><span class="kw1">case</span></a> Result<span class="br0">&#40;</span>obj<span class="sy0">:</span> A, returndata<span class="sy0">:</span> B, t1<span class="br0">&#41;</span> <span class="sy0">=&gt;</span> 
          sender <span class="sy0">!</span> Stop
          <a href="http://scala-lang.org"><span class="kw1">return</span></a> schedule<span class="br0">&#40;</span>databuffer, Result<span class="br0">&#40;</span>obj, returndata, t1<span class="br0">&#41;</span> <span class="sy0">::</span> buffer, cache<span class="sy0">_</span>size - <span class="nu0">1</span><span class="br0">&#41;</span>
      <span class="br0">&#125;</span>  
&nbsp;
    <span class="br0">&#125;</span>
&nbsp;
    schedule<span class="br0">&#40;</span>data, List<span class="br0">&#91;</span>Result<span class="br0">&#91;</span>A, B<span class="br0">&#93;</span><span class="br0">&#93;</span><span class="br0">&#40;</span><span class="br0">&#41;</span>, <span class="nu0">0</span><span class="br0">&#41;</span>  
  <span class="br0">&#125;</span>    
&nbsp;
<span class="br0">&#125;</span></pre>]]></summary>
    </entry>
</feed>

