<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/css" href="/stylesheets/rss.css"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
  <channel>
    <title>Object Mentor Blog: Scala Bowling Kata - still in the middle I suppose</title>
    <link>http://blog.objectmentor.com/articles/2009/10/07/scala-bowling-kata-still-in-the-middle-i-suppose</link>
    <language>en-us</language>
    <ttl>40</ttl>
    <description></description>
    <item>
      <title>Scala Bowling Kata - still in the middle I suppose</title>
      <description>I had a 3.5 hour flight today. I realized I was missing some of the validation from the Ruby version related to how many rolls a valid game should allow:
&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_scala "&gt;  &amp;quot;One more roll on a game with 20 rolls and an open 10th frame&amp;quot; should {
    20 times { roll(1) }
    roll(1) must throwA[IllegalArgumentException]
  }

  &amp;quot;Two more rolls a game with 10 spares&amp;quot; should {
    10 times { spare }
    roll(1)
    roll(1) must throwA[IllegalArgumentException]
  }

  &amp;quot;Two marks in the 10th frame should&amp;quot; should {
    18 times { roll(1) }
    strike
    spare
    roll(1) must throwA[IllegalArgumentException]
  }&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

	&lt;p&gt;On my flight from &lt;span class="caps"&gt;DFW&lt;/span&gt; to &lt;span class="caps"&gt;SNA&lt;/span&gt;, I got these behaviors implemented. The code was pretty ugly!&lt;/p&gt;


	&lt;p&gt;However, ugly code in hand, passing examples, a slight understanding of some of the problems with my code and a desire to make the BowlingScorer immutable was all I needed to make progress.&lt;/p&gt;


I removed the index instance field by rewriting the score method and injecting a tuple into foldLeft (written here using the short-hand notation /:):
&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_scala "&gt;  def scoreAt(frame:Int) = 
    ((0,0) /: (1 to frame)) { (t, _) =&amp;gt;  
      (t._1 + scoreAtIndex(t._2), t._2 + incrementAt(t._2))
    }._1&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

I had a mini state machine to track whether the first ball had been thrown yet or not. I replaced that by walking the list of scores:
&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_default "&gt;  def onFirstThrow = {
    var index = 0
    while(index &amp;lt; rolls.length)
      if(isStrike(index)) index += 1 else index += 2
    index == rolls.length
  }&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

	&lt;p&gt;While I am happy I was able to remove the index variable, which was really a parameter being passed around in a field (ugly), I am not happy with this method.&lt;/p&gt;


I changed the roll method to return a new instance of a BowlingScorer, making the bowling scorer immutable:
&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_scala "&gt;  def roll(roll:Int) = {
    validate(roll)
    new BowlingScorer(rolls ++ Array(roll))
  }&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

	&lt;p&gt;So I think I&amp;#8217;m still somewhere in the middle of working through this code. Again, I&amp;#8217;m still learning Scala. I have a lot to learn. I really only barely understand functional programming and, frankly, the Eclipse &lt;span class="caps"&gt;IDE&lt;/span&gt;, while functional, is getting in the way quite a bit. So for a toy example it is OK. Given the choice of this environment or vi and the command line, I&amp;#8217;d not pick the former. (I might give the other &lt;span class="caps"&gt;IDE&lt;/span&gt;&amp;#8217;s a go, but that&amp;#8217;s not really what I&amp;#8217;m interested in learning right now.)&lt;/p&gt;


	&lt;p&gt;So here&amp;#8217;s the next version. I plan to work through all of the comments I&amp;#8217;ve yet to process from the previous blog posting over the next few days. If you can recommend a better implementation of onFirstThrow, I&amp;#8217;d appreciate it.&lt;/p&gt;


	&lt;p&gt;Other general comments also welcome.&lt;/p&gt;


	&lt;p&gt;&lt;b&gt;&lt;i&gt;BowlingScorerExampleGroup.scala&lt;/b&gt;&lt;/i&gt;
&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_scala "&gt;package com.om.example

import org.specs._

object BowlingScorerExampleGroup extends SpecificationWithJUnit {
  var scorer = new BowlingScorer(Nil);

  def roll(value:Int) =
    scorer = scorer.roll(value) 

  def haveAScoreOf(expected:Int) =
    scorer.score must_== expected

  def strike =
    roll(10)

  def spare {
    roll(5)
    roll(5)
  }

  implicit def intToDo(count: Int) = {
    new {
      def times(f: =&amp;gt; Unit) = {
        1 to count foreach { _ =&amp;gt; f }
      }
    }
  }

  &amp;quot;A Newly Created Bowling Scorer&amp;quot; should {
    haveAScoreOf(0)
  }

  &amp;quot;A game with all 0's&amp;quot; should {
    20 times { roll(0) }
    haveAScoreOf(0)
  }

  &amp;quot;A game with all 1's&amp;quot; should {
    20 times { roll(1) }
    haveAScoreOf(20)
  }

  &amp;quot;A game with a single spare followed by a 5&amp;quot; should {
    spare
    roll(5)
    haveAScoreOf(20)
  }

  &amp;quot;A game with all 5's&amp;quot; should {
    10 times { spare }
    roll(5)
    haveAScoreOf(150)
  }

  &amp;quot;A game with a single strike followed by a 4&amp;quot; should {
    strike
    roll(4)
    haveAScoreOf(18)
  }

  &amp;quot;A game with a strike, spare then an open frame with two 3's&amp;quot; should {
    strike
    spare
    2 times { roll(3) }
    haveAScoreOf(39)
  }

  &amp;quot;A game with strike, spare then an open frame with two 3's&amp;quot; should {
    spare
    strike
    2 times { roll(3) }
    haveAScoreOf(42)
  }

  &amp;quot;A Dutch 200 game, Spare-Strike&amp;quot; should {
    5 times {
      spare 
      strike
    }
    spare
    haveAScoreOf(200)
  }

  &amp;quot;A Dutch 200 game, Strike-Spare&amp;quot; should {
    5 times {
      strike
      spare 
    }
    strike
    haveAScoreOf(200)
  } 

  &amp;quot;A Perfect game&amp;quot; should {
    12 times { strike }
    haveAScoreOf(300)
  }

  &amp;quot;The score for each frame of a Perfect game, each frame&amp;quot; should {
    12 times { strike }
    1 to 10 foreach { frame =&amp;gt; scorer.scoreAt(frame) must_== 30 * frame }
  }

  &amp;quot;An individaul roll of &amp;gt; 10&amp;quot; should {
    roll(11) must throwA[IllegalArgumentException]
  }

  &amp;quot;An iniviaul roll of &amp;lt; 0&amp;quot; should {
    roll(-1) must throwA[IllegalArgumentException]
  }

  &amp;quot;A frame trying to contain more than 10 pins&amp;quot; should {
    roll(8)
    roll(3) must throwA[IllegalArgumentException]
  }

  &amp;quot;One more roll on a game with 20 rolls and an open 10th frame&amp;quot; should {
    20 times { roll(1) }
    roll(1) must throwA[IllegalArgumentException]
  }

  &amp;quot;Two more rolls a game with 10 spares&amp;quot; should {
    10 times { spare }
    roll(1)
    roll(1) must throwA[IllegalArgumentException]
  }

  &amp;quot;Two marks in the 10th frame should&amp;quot; should {
    18 times { roll(1) }
    strike
    spare
    roll(1) must throwA[IllegalArgumentException]
  }
}&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/p&gt;


	&lt;p&gt;&lt;b&gt;&lt;i&gt;BowlingScorer.scala&lt;/b&gt;&lt;/i&gt;
&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_scala "&gt;package com.om.example

class BowlingScorer(rollsSoFar:List[Int]){
   val rolls:List[Int] = rollsSoFar

  def roll(roll:Int) = {
    validate(roll)
    new BowlingScorer(rolls ++ Array(roll))
  }

  def validate(roll:Int) {
    if(invalidRoll(roll))
      throw new IllegalArgumentException(&amp;quot;Individaul rolls must be from 0 .. 10&amp;quot;)

    if(frameRollTooHigh(roll))
      throw new IllegalArgumentException(&amp;quot;Total of rolls for frame must not exceed 10&amp;quot;);

    if(willBeTooManyRolls)
      throw new IllegalArgumentException(&amp;quot;Game over, no more rolls allowed&amp;quot;)
  }

  def invalidRoll(roll:Int) = 
    (0 to 10 contains(roll)) == false  

  def frameRollTooHigh(roll:Int) =
    openScoreAt(indexToValidate) + roll &amp;gt; 10

  def willBeTooManyRolls = 
    tenthRolled(indexOf10thFrame) &amp;amp;&amp;amp; nextRollTooMany(indexOf10thFrame)

  def tenthRolled(tenthIndex:Int) = 
    tenthIndex &amp;lt; rolls.length

  def nextRollTooMany(tenthIndex: Int) = 
    allowedTenthFrameRolls(tenthIndex) &amp;lt; rollsInTenthFrame(tenthIndex) + 1

  def indexOf10thFrame = 
    (0 /: (1 until 10)) {(c, _) =&amp;gt; c + incrementAt(c)}

  def allowedTenthFrameRolls(index:Int) =
    if(isMark(index)) 3 else 2

  def rollsInTenthFrame(index: Int) =
    rolls.length - index

  def indexToValidate =
    if(onFirstThrow) rolls.length else rolls.length - 1

  def onFirstThrow = {
    var index = 0
    while(index &amp;lt; rolls.length)
      if(isStrike(index)) index += 1 else index += 2
    index == rolls.length
  }

  def scoreAt(frame:Int) = 
    ((0,0) /: (1 to frame)) { (t, _) =&amp;gt;  
      (t._1 + scoreAtIndex(t._2), t._2 + incrementAt(t._2))
    }._1

  def score = scoreAt(10)

  def scoreAtIndex(index:Int) =
    if(isMark(index)) markScoreAt(index) else openScoreAt(index)

  def incrementAt(index:Int) =
    if(isStrike(index)) 1 else 2

  def isMark(index:Int) =
    isStrike(index) || isSpare(index)

  def isStrike(index:Int) =
    valueAt(index) == 10

  def markScoreAt(index:Int) =
    sumNext(index, 3)

  def isSpare(index:Int) =
    openScoreAt(index) == 10 &amp;amp;&amp;amp; valueAt(index) != 10

  def openScoreAt(index:Int) =
    sumNext(index, 2)

  def sumNext(index:Int, count:Int) =
    (0 /: (index until index+count))(_ + valueAt(_))

  def valueAt(index:Int) = 
    if(rolls.length &amp;gt; index) rolls(index) else 0
}&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/p&gt;</description>
      <pubDate>Wed, 07 Oct 2009 00:51:00 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:92053ad6-01f8-4086-abbe-55dd0e6088d9</guid>
      <author>Brett Schuchert</author>
      <link>http://blog.objectmentor.com/articles/2009/10/07/scala-bowling-kata-still-in-the-middle-i-suppose</link>
      <category>Schuchert's Scattered Synapses </category>
      <category>Scala</category>
      <category>bdd</category>
      <category>specs</category>
      <category>bowling</category>
      <category>kata</category>
    </item>
    <item>
      <title>"Scala Bowling Kata - still in the middle I suppose" by iPhone contacts backup</title>
      <description>&lt;p&gt;I have the same idea. How this work?&lt;/p&gt;</description>
      <pubDate>Sun, 15 Jan 2012 01:31:29 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:48ea8bbf-f4b8-4cff-84f2-81cd32f0cbca</guid>
      <link>http://blog.objectmentor.com/articles/2009/10/07/scala-bowling-kata-still-in-the-middle-i-suppose#comment-197899</link>
    </item>
    <item>
      <title>"Scala Bowling Kata - still in the middle I suppose" by  Banqueting hall (Birmingham)</title>
      <description>&lt;p&gt;Great article and one that&amp;#8217;s very important for merchants to understand. This is the entire point of my business and I&amp;#8217;m happy to say merchants ARE in fact investing more into this marketing channel and giving it the time it needs to properly grow. Affiliate marketing is a long term investment and one that can show some serious sales and profits over the long term.&lt;/p&gt;</description>
      <pubDate>Tue, 03 Jan 2012 12:32:38 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:d8dd57e7-52e4-442d-9d7e-c5796e27560f</guid>
      <link>http://blog.objectmentor.com/articles/2009/10/07/scala-bowling-kata-still-in-the-middle-i-suppose#comment-194517</link>
    </item>
    <item>
      <title>"Scala Bowling Kata - still in the middle I suppose" by mac cosmetics</title>
      <description>&lt;p&gt;mac cosmetics oakley active sunglasses wholesale mac cosmetics Oakley Sport Sunglasses mac lipstick
Yanggengsheng&lt;/p&gt;</description>
      <pubDate>Sun, 18 Dec 2011 18:52:30 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:5c8ff2eb-6642-4eca-9189-e944de8f93d6</guid>
      <link>http://blog.objectmentor.com/articles/2009/10/07/scala-bowling-kata-still-in-the-middle-i-suppose#comment-188879</link>
    </item>
    <item>
      <title>"Scala Bowling Kata - still in the middle I suppose" by Cheap Ugg Boots Sale</title>
      <description>&lt;p&gt;starting with &amp;#8220;saving this country from a Great Depression&amp;#8221; and rescuing the auto industry. &lt;a href="http://www.bootstoresale.com/hot-sale-ugg-boots-c-85.html" rel="nofollow"&gt;http://www.bootstoresale.com/hot-sale-ugg-boots-c-85.html&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Tue, 13 Dec 2011 21:42:12 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:38e07b69-cbf1-4efe-bedb-0a229d65db7d</guid>
      <link>http://blog.objectmentor.com/articles/2009/10/07/scala-bowling-kata-still-in-the-middle-i-suppose#comment-186207</link>
    </item>
    <item>
      <title>"Scala Bowling Kata - still in the middle I suppose" by Running sayings</title>
      <description>&lt;p&gt;Se&#241;or blog impresionante. Sus art&#237;culos son incre&#237;bles. Pase por mi blog en el corto plazo si desea alguna informaci&#243;n fresca sobre las camisas en ejecuci&#243;n.&lt;/p&gt;</description>
      <pubDate>Sat, 10 Dec 2011 21:39:23 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:88bb3043-6966-44c0-91bf-32afd568d677</guid>
      <link>http://blog.objectmentor.com/articles/2009/10/07/scala-bowling-kata-still-in-the-middle-i-suppose#comment-185097</link>
    </item>
    <item>
      <title>"Scala Bowling Kata - still in the middle I suppose" by Oakley Glasses For Sale</title>
      <description>&lt;p&gt;Are you gonna be bewildered by simply whether you should buy cheap tailor made glasses while this reductions you need to get can be extremely easier?New Oakley Glasses Have you been one of those certain folks who think that something will probably be worth possessing providing you might have forked out big money for doing this? It is difficult to think you just aren&amp;#8217;t specified round the desirabilityOakley Cups For Sale affecting affordable author eyewear thinking about exactly how overpriced luxury bags are starting to be today.Oakley Glasses In reality, these kind of tools cost substantial these days that it is changing into very frustrating for anyone so as to take pleasure in their unique adoration for movement!&lt;/p&gt;</description>
      <pubDate>Mon, 21 Nov 2011 19:29:07 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:d960b2cb-4153-49d8-b09c-20cd05f2ec93</guid>
      <link>http://blog.objectmentor.com/articles/2009/10/07/scala-bowling-kata-still-in-the-middle-i-suppose#comment-176185</link>
    </item>
    <item>
      <title>"Scala Bowling Kata - still in the middle I suppose" by christian louboutin</title>
      <description>&lt;p&gt;The professional design make you foot more comfortable. Even more tantalizing,this pattern make your legs look as long as you can,it will make you looked more attractive.Moveover,it has reasonable price.If you are a popular woman,do not miss it.&lt;/p&gt;


	&lt;p&gt;Technical details of Christian Louboutin Velours Scrunch Suede Boots Coffee:&lt;/p&gt;


	&lt;pre&gt;&lt;code&gt;Color: Coffee
Material: Suede
4(100mm) heel
Signature red sole x&lt;/code&gt;&lt;/pre&gt;


	&lt;p&gt;Fashion, delicate, luxurious Christian louboutins shoes on sale, one of its series is Christian Louboutin Tall Boots, is urbanism collocation. This Christian louboutins shoes design makes people new and refreshing. Red soles shoes is personality, your charm will be wonderful performance.&lt;/p&gt;</description>
      <pubDate>Thu, 03 Nov 2011 09:40:14 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:1dd9dec4-5067-4709-9712-b2d38d858bbd</guid>
      <link>http://blog.objectmentor.com/articles/2009/10/07/scala-bowling-kata-still-in-the-middle-i-suppose#comment-167634</link>
    </item>
    <item>
      <title>"Scala Bowling Kata - still in the middle I suppose" by website design</title>
      <description>&lt;p&gt;im finding herer some useful code here&lt;/p&gt;</description>
      <pubDate>Thu, 20 Oct 2011 01:44:03 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:6a3251bd-124e-4e96-8d44-8276d6773337</guid>
      <link>http://blog.objectmentor.com/articles/2009/10/07/scala-bowling-kata-still-in-the-middle-i-suppose#comment-159907</link>
    </item>
    <item>
      <title>"Scala Bowling Kata - still in the middle I suppose" by full colour leaflet</title>
      <description>&lt;p&gt;now a days am very keenly searching some mathmatics code..seems ur site is helpful for me&lt;/p&gt;</description>
      <pubDate>Thu, 20 Oct 2011 01:42:11 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:2172c9c2-b14f-48e7-a1dc-8223a28853aa</guid>
      <link>http://blog.objectmentor.com/articles/2009/10/07/scala-bowling-kata-still-in-the-middle-i-suppose#comment-159906</link>
    </item>
    <item>
      <title>"Scala Bowling Kata - still in the middle I suppose" by Tips For Bowling</title>
      <description>&lt;p&gt;Hi there! Someone in my Facebook group shared this website with us so I came to give it a look. I&amp;#8217;m definitely enjoying the information. I&amp;#8217;m book-marking and will be tweeting this to my followers! Exceptional blog and excellent style and design.&lt;/p&gt;</description>
      <pubDate>Tue, 18 Oct 2011 12:14:35 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:fda39dc4-8c9a-4cf4-8f5b-1f503899bb80</guid>
      <link>http://blog.objectmentor.com/articles/2009/10/07/scala-bowling-kata-still-in-the-middle-i-suppose#comment-159087</link>
    </item>
    <item>
      <title>"Scala Bowling Kata - still in the middle I suppose" by Fake Oakley Gascan sunglasses</title>
      <description>&lt;p&gt;I love this article, it&amp;#8217;s very well.&lt;a href="http://www.oakleysunglassesmvp.com/oakley-active-sunglasses-oakley-encounter-c-5_9.html" rel="nofollow"&gt;Oakley Encounter Sunglasses&lt;/a&gt;&lt;a href="http://www.oakleysunglassesmvp.com/oakley-active-sunglasses-oakley-forsake-c-5_34.html" rel="nofollow"&gt;Oakley Forsake Sunglasses&lt;/a&gt;&lt;a href="http://www.oakleysunglassesmvp.com/oakley-active-sunglasses-oakley-half-wire-c-5_20.html" rel="nofollow"&gt;Oakley Half Wire Sunglasses&lt;/a&gt;&lt;a href="http://www.oakleysunglassesmvp.com/oakley-active-sunglasses-oakley-half-x-c-5_18.html" rel="nofollow"&gt;Oakley Half X Sunglasses&lt;/a&gt;&lt;a &gt;&lt;/a rel="nofollow"&gt;&lt;/p&gt;</description>
      <pubDate>Thu, 13 Oct 2011 00:15:15 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:2c3fcef4-97a7-4a48-82c9-0af0bbd121dc</guid>
      <link>http://blog.objectmentor.com/articles/2009/10/07/scala-bowling-kata-still-in-the-middle-i-suppose#comment-155602</link>
    </item>
    <item>
      <title>"Scala Bowling Kata - still in the middle I suppose" by Fake Oakley Radar</title>
      <description>&lt;p&gt;It really a good article.&lt;a href="http://www.oakleysunglassesmvp.com/oakley-sport-sunglasses-c-1.html" rel="nofollow"&gt;Oakley Sport Sunglasses&lt;/a&gt;&lt;a href="http://www.oakleysunglassesmvp.com/oakley-sport-sunglasses-oakley-jawbone-c-1_16.html" rel="nofollow"&gt;Oakley Jawbone Sunglasses&lt;/a&gt;&lt;a href="http://www.oakleysunglassesmvp.com/oakley-sport-sunglasses-oakley-radar-c-1_2.html" rel="nofollow"&gt;Oakley Radar Sunglasses&lt;/a&gt;&lt;a href="http://www.oakleysunglassesmvp.com/oakley-sport-sunglasses-oakley-m-frame-c-1_12.html" rel="nofollow"&gt;Oakley M Frame Sunglasses&lt;/a&gt;&lt;a href="http://www.oakleyshadestore.com/fake-oakleys-aaa-specials-c-2.html" rel="nofollow"&gt;Fake Oakleys AAA Specials sunglasses&lt;/a&gt;&lt;a href="http://www.oakleyshadestore.com/fake-oakley-flak-jacket-c-11.html" rel="nofollow"&gt;Fake Oakley Flak Jacket sunglasses&lt;/a&gt;&lt;a href="http://www.oakleyshadestore.com/fake-oakley-juliet-c-16.html" rel="nofollow"&gt;Fake Oakley Juliet sunglasses&lt;/a&gt;&lt;a href="http://www.oakleyshadestore.com/fake-oakley-half-jacket-c-3.html" rel="nofollow"&gt;Fake Oakley Half Jacket sunglasses&lt;/a&gt;&lt;a href="http://www.replicaoakleysunglassmall.com/replica-oakleys-promotion-sale-c-2.html" rel="nofollow"&gt;Replica Oakleys Promotion Sale&lt;/a&gt;&lt;a href="http://www.replicaoakleysunglassmall.com/replica-oakley-jawbone-sunglasses-c-20.html" rel="nofollow"&gt;Replica Oakley Jawbone Sunglasses&lt;/a&gt;&lt;a href="http://www.replicaoakleysunglassmall.com/replica-oakley-oil-rig-sunglasses-c-23.html" rel="nofollow"&gt;Replica Oakley Oil Rig Sunglasses&lt;/a&gt;&lt;a href="http://www.replicaoakleysunglassmall.com/replica-oakley-polarized-sunglasses-c-34.html" rel="nofollow"&gt;Replica Oakley Polarized Sunglasses&lt;/a&gt;&lt;a href="http://www.replicaoakleysglass.com/replica-oakley-batwolf-sunglasses-c-7.html" rel="nofollow"&gt;Fake Oakley Batwolf&lt;/a&gt;&lt;a href="http://www.replicaoakleysglass.com/replica-oakley-dangerous-sunglasses-c-76.html" rel="nofollow"&gt;Fake Oakley Dangerous&lt;/a&gt;&lt;a href="http://www.replicaoakleysglass.com/replica-oakley-dart-sunglasses-c-77.html" rel="nofollow"&gt;Fake Oakley Dart&lt;/a&gt;&lt;a href="http://www.sunglassbranded.com/oakley-sunglasses-oakley-antix-sunglasses-c-18_67.html" rel="nofollow"&gt;cheap Oakley Antix Sunglasses&lt;/a&gt;&lt;a href="http://www.sunglassbranded.com/oakley-sunglasses-oakley-antix-sunglasses-c-18_67.html" rel="nofollow"&gt;Oakley Antix Sunglasses wholesale&lt;/a&gt;&lt;a href="http://www.sunglassbranded.com/oakley-sunglasses-oakley-antix-sunglasses-c-18_67.html" rel="nofollow"&gt;replica Oakley Antix Sunglasses&lt;/a&gt;&lt;a href="http://www.sunglassbranded.com/oakley-sunglasses-oakley-batwolf-sunglasses-c-18_31.html" rel="nofollow"&gt;cheap oakley batwolf sunglasses&lt;/a&gt;&lt;a href="http://www.sunglassbranded.com/oakley-sunglasses-oakley-batwolf-sunglasses-c-18_31.html" rel="nofollow"&gt;oakley batwolf sunglasses wholesale&lt;/a&gt;&lt;a href="http://www.sunglassbranded.com/oakley-sunglasses-oakley-batwolf-sunglasses-c-18_31.html" rel="nofollow"&gt;replica oakley batwolf sunglasses&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Wed, 12 Oct 2011 22:59:06 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:3c5932b3-382f-4784-8d9e-1dbda678ebab</guid>
      <link>http://blog.objectmentor.com/articles/2009/10/07/scala-bowling-kata-still-in-the-middle-i-suppose#comment-155586</link>
    </item>
    <item>
      <title>"Scala Bowling Kata - still in the middle I suppose" by replica oakley gascan sunglasses</title>
      <description>&lt;p&gt;It&amp;#8217;s wonderful, thank you. &lt;a href="http://www.sunglassbranded.com/oakley-sunglasses-oakley-monster-dog-sunglasses-c-18_42.html" rel="nofollow"&gt;replica oakley monster dog sunglasses&lt;/a&gt;&lt;a href="http://www.sunglassbranded.com/oakley-sunglasses-oakley-necessity-sunglasses-c-18_83.html" rel="nofollow"&gt;cheap Oakley Necessity Sunglasses&lt;/a&gt;&lt;a href="http://www.sunglassbranded.com/oakley-sunglasses-oakley-necessity-sunglasses-c-18_83.html" rel="nofollow"&gt;Oakley Necessity Sunglasses wholesale&lt;/a&gt;&lt;a href="http://www.sunglassbranded.com/oakley-sunglasses-oakley-necessity-sunglasses-c-18_83.html" rel="nofollow"&gt;replica Oakley Necessity Sunglasses&lt;/a&gt;&lt;a href="http://www.sunglassbranded.com/oakley-sunglasses-oakley-oil-rig-sunglasses-c-18_43.html" rel="nofollow"&gt;oakley oil rig sunglasses wholesale&lt;/a&gt;&lt;a href="http://www.sunglassbranded.com/oakley-sunglasses-oakley-pit-boss-sunglasses-c-18_77.html" rel="nofollow"&gt;cheap Oakley Pit Boss Sunglasses&lt;/a&gt;&lt;a href="http://www.sunglassbranded.com/oakley-sunglasses-oakley-pit-boss-sunglasses-c-18_77.html" rel="nofollow"&gt;Oakley Pit Boss Sunglasses wholesale&lt;/a&gt;&lt;a href="http://www.replicaoakleysglass.com/replica-oakley-sunglasses-promotion-replica-oakley-holbrook-sunglasses-c-39_71.html" rel="nofollow"&gt;Replica Oakley Holbrook&lt;/a&gt;&lt;a href="http://www.replicaoakleysglass.com/replica-oakley-sunglasses-promotion-replica-oakley-jawbone-sunglasses-c-39_52.html" rel="nofollow"&gt;Replica Oakley Jawbone&lt;/a&gt;&lt;a href="http://www.replicaoakleysglass.com/replica-oakley-sunglasses-promotion-replica-oakley-juliet-sunglasses-c-39_55.html" rel="nofollow"&gt;Replica Oakley Juliet&lt;/a&gt;&lt;a href="http://www.replicaoakleysunglassmall.com/replica-oakley-scalpel-sunglasses-c-27.html" rel="nofollow"&gt;Replica Oakley Scalpel Sunglasses&lt;/a&gt;&lt;a href="http://www.replicaoakleysunglassmall.com/replica-oakley-straight-jacket-sunglasses-c-12.html" rel="nofollow"&gt;Replica Oakley Straight Jacket Sunglasses&lt;/a&gt;&lt;a href="http://www.replicaoakleysunglassmall.com/replica-oakley-ten-sunglasses-c-10.html" rel="nofollow"&gt;Replica Oakley Ten Sunglasses&lt;/a&gt;&lt;a href="http://www.replicaoakleysunglassmall.com/replica-oakley-zero-sunglasses-c-7.html" rel="nofollow"&gt;Replica Oakley Zero Sunglasses&lt;/a&gt;&lt;a href="http://www.oakleyshadestore.com/fake-oakley-monster-dog-c-7.html" rel="nofollow"&gt;Fake Oakley Monster Dog sunglasses&lt;/a&gt;&lt;a href="http://www.oakleyshadestore.com/fake-oakley-pit-boss-c-12.html" rel="nofollow"&gt;Fake Oakley Pit Boss sunglasses&lt;/a&gt;&lt;a href="http://www.oakleyshadestore.com/fake-oakley-restless-c-28.html" rel="nofollow"&gt;Fake Oakley Restless sunglasses&lt;/a&gt;&lt;a href="http://www.oakleyshadestore.com/fake-oakley-scalpel-c-25.html" rel="nofollow"&gt;Fake Oakley Scalpel sunglasses&lt;/a&gt;&lt;a href="http://www.oakleysunglassesmvp.com/oakley-lifestyle-sunglasses-oakley-frogskins-c-7_27.html" rel="nofollow"&gt;Oakley Frogskins Sunglasses&lt;/a&gt;&lt;a href="http://www.oakleysunglassesmvp.com/oakley-lifestyle-sunglasses-oakley-fuel-cell-c-7_29.html" rel="nofollow"&gt;Oakley Fuel Cell Sunglasses&lt;/a&gt;&lt;a href="http://www.oakleysunglassesmvp.com/oakley-lifestyle-sunglasses-oakley-gascan-c-7_32.html" rel="nofollow"&gt;Oakley Gascan Sunglasses&lt;/a&gt;&lt;a href="http://www.oakleysunglassesmvp.com/oakley-lifestyle-sunglasses-oakley-hijinx-c-7_8.html" rel="nofollow"&gt;Oakley Hijinx Sunglasses&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Wed, 12 Oct 2011 22:23:02 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:de6d6773-268c-45dd-8324-5c4bc04b6128</guid>
      <link>http://blog.objectmentor.com/articles/2009/10/07/scala-bowling-kata-still-in-the-middle-i-suppose#comment-155553</link>
    </item>
    <item>
      <title>"Scala Bowling Kata - still in the middle I suppose" by replica oakley gascan sunglasses</title>
      <description>&lt;p&gt;It&amp;#8217;s wonderful, thank you. &lt;a href="http://www.sunglassbranded.com/oakley-sunglasses-oakley-monster-dog-sunglasses-c-18_42.html" rel="nofollow"&gt;replica oakley monster dog sunglasses&lt;/a&gt;&lt;a href="http://www.sunglassbranded.com/oakley-sunglasses-oakley-necessity-sunglasses-c-18_83.html" rel="nofollow"&gt;cheap Oakley Necessity Sunglasses&lt;/a&gt;&lt;a href="http://www.sunglassbranded.com/oakley-sunglasses-oakley-necessity-sunglasses-c-18_83.html" rel="nofollow"&gt;Oakley Necessity Sunglasses wholesale&lt;/a&gt;&lt;a href="http://www.sunglassbranded.com/oakley-sunglasses-oakley-necessity-sunglasses-c-18_83.html" rel="nofollow"&gt;replica Oakley Necessity Sunglasses&lt;/a&gt;&lt;a href="http://www.sunglassbranded.com/oakley-sunglasses-oakley-oil-rig-sunglasses-c-18_43.html" rel="nofollow"&gt;oakley oil rig sunglasses wholesale&lt;/a&gt;&lt;a href="http://www.sunglassbranded.com/oakley-sunglasses-oakley-pit-boss-sunglasses-c-18_77.html" rel="nofollow"&gt;cheap Oakley Pit Boss Sunglasses&lt;/a&gt;&lt;a href="http://www.sunglassbranded.com/oakley-sunglasses-oakley-pit-boss-sunglasses-c-18_77.html" rel="nofollow"&gt;Oakley Pit Boss Sunglasses wholesale&lt;/a&gt;&lt;a href="http://www.replicaoakleysglass.com/replica-oakley-sunglasses-promotion-replica-oakley-holbrook-sunglasses-c-39_71.html" rel="nofollow"&gt;Replica Oakley Holbrook&lt;/a&gt;&lt;a href="http://www.replicaoakleysglass.com/replica-oakley-sunglasses-promotion-replica-oakley-jawbone-sunglasses-c-39_52.html" rel="nofollow"&gt;Replica Oakley Jawbone&lt;/a&gt;&lt;a href="http://www.replicaoakleysglass.com/replica-oakley-sunglasses-promotion-replica-oakley-juliet-sunglasses-c-39_55.html" rel="nofollow"&gt;Replica Oakley Juliet&lt;/a&gt;&lt;a href="http://www.replicaoakleysunglassmall.com/replica-oakley-scalpel-sunglasses-c-27.html" rel="nofollow"&gt;Replica Oakley Scalpel Sunglasses&lt;/a&gt;&lt;a href="http://www.replicaoakleysunglassmall.com/replica-oakley-straight-jacket-sunglasses-c-12.html" rel="nofollow"&gt;Replica Oakley Straight Jacket Sunglasses&lt;/a&gt;&lt;a href="http://www.replicaoakleysunglassmall.com/replica-oakley-ten-sunglasses-c-10.html" rel="nofollow"&gt;Replica Oakley Ten Sunglasses&lt;/a&gt;&lt;a href="http://www.replicaoakleysunglassmall.com/replica-oakley-zero-sunglasses-c-7.html" rel="nofollow"&gt;Replica Oakley Zero Sunglasses&lt;/a&gt;&lt;a href="http://www.oakleyshadestore.com/fake-oakley-monster-dog-c-7.html" rel="nofollow"&gt;Fake Oakley Monster Dog sunglasses&lt;/a&gt;&lt;a href="http://www.oakleyshadestore.com/fake-oakley-pit-boss-c-12.html" rel="nofollow"&gt;Fake Oakley Pit Boss sunglasses&lt;/a&gt;&lt;a href="http://www.oakleyshadestore.com/fake-oakley-restless-c-28.html" rel="nofollow"&gt;Fake Oakley Restless sunglasses&lt;/a&gt;&lt;a href="http://www.oakleyshadestore.com/fake-oakley-scalpel-c-25.html" rel="nofollow"&gt;Fake Oakley Scalpel sunglasses&lt;/a&gt;&lt;a href="http://www.oakleysunglassesmvp.com/oakley-lifestyle-sunglasses-oakley-frogskins-c-7_27.html" rel="nofollow"&gt;Oakley Frogskins Sunglasses&lt;/a&gt;&lt;a href="http://www.oakleysunglassesmvp.com/oakley-lifestyle-sunglasses-oakley-fuel-cell-c-7_29.html" rel="nofollow"&gt;Oakley Fuel Cell Sunglasses&lt;/a&gt;&lt;a href="http://www.oakleysunglassesmvp.com/oakley-lifestyle-sunglasses-oakley-gascan-c-7_32.html" rel="nofollow"&gt;Oakley Gascan Sunglasses&lt;/a&gt;&lt;a href="http://www.oakleysunglassesmvp.com/oakley-lifestyle-sunglasses-oakley-hijinx-c-7_8.html" rel="nofollow"&gt;Oakley Hijinx Sunglasses&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Wed, 12 Oct 2011 22:22:52 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:d5d61f12-7368-469d-8604-42402e4b0007</guid>
      <link>http://blog.objectmentor.com/articles/2009/10/07/scala-bowling-kata-still-in-the-middle-i-suppose#comment-155552</link>
    </item>
    <item>
      <title>"Scala Bowling Kata - still in the middle I suppose" by Christian</title>
      <description>&lt;p&gt;asas dfa79+98s98s8sssdfaaa&lt;/p&gt;</description>
      <pubDate>Mon, 10 Oct 2011 23:21:36 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:f9b8f16a-00f9-4884-ac0d-f3638ed14b54</guid>
      <link>http://blog.objectmentor.com/articles/2009/10/07/scala-bowling-kata-still-in-the-middle-i-suppose#comment-153976</link>
    </item>
    <item>
      <title>"Scala Bowling Kata - still in the middle I suppose" by moncler</title>
      <description>&lt;p&gt;asdfs dfg+d98d88d8d5d&lt;/p&gt;</description>
      <pubDate>Mon, 10 Oct 2011 23:04:08 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:f6fc92f2-af04-4845-b57d-553601864b27</guid>
      <link>http://blog.objectmentor.com/articles/2009/10/07/scala-bowling-kata-still-in-the-middle-i-suppose#comment-153957</link>
    </item>
    <item>
      <title>"Scala Bowling Kata - still in the middle I suppose" by Louboutins</title>
      <description>&lt;p&gt;asdasd +f9s89d96ddd&lt;/p&gt;</description>
      <pubDate>Mon, 10 Oct 2011 23:00:11 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:310c9ef6-4081-49e0-a9d1-997571f186a0</guid>
      <link>http://blog.objectmentor.com/articles/2009/10/07/scala-bowling-kata-still-in-the-middle-i-suppose#comment-153934</link>
    </item>
    <item>
      <title>"Scala Bowling Kata - still in the middle I suppose" by car colour service</title>
      <description>&lt;p&gt;i am trying this code and its work&lt;/p&gt;</description>
      <pubDate>Mon, 10 Oct 2011 00:54:21 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:7bb721be-41d2-419f-be3d-8ee8b30a5c15</guid>
      <link>http://blog.objectmentor.com/articles/2009/10/07/scala-bowling-kata-still-in-the-middle-i-suppose#comment-153290</link>
    </item>
    <item>
      <title>"Scala Bowling Kata - still in the middle I suppose" by karin</title>
      <description>&lt;p&gt;I saw this one and fell in love! I must admit i was dubious about ordering a dress from a overseas company, but i can&amp;#8217;t praise Lightinthebox enough for there professionalism, quality, communications, and swift delivery.
I ordered a custom size and the dress was delivered in just over 2 weeks to the UK. One word sums up the quality of this dress&amp;#8230; Wow!!!
The material is really good quality and the craftsmanship is second to none&lt;/p&gt;</description>
      <pubDate>Wed, 28 Sep 2011 01:30:03 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:6a53522e-df03-4f5e-8c5c-3bd0fc51bed8</guid>
      <link>http://blog.objectmentor.com/articles/2009/10/07/scala-bowling-kata-still-in-the-middle-i-suppose#comment-146504</link>
    </item>
    <item>
      <title>"Scala Bowling Kata - still in the middle I suppose" by DR OZ african Mango </title>
      <description>&lt;p&gt;it needs a bokmark so i can come back to it later ,nice stuff&lt;/p&gt;</description>
      <pubDate>Tue, 27 Sep 2011 11:42:51 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:24f8f33e-9297-438a-8d7f-256a08cbf721</guid>
      <link>http://blog.objectmentor.com/articles/2009/10/07/scala-bowling-kata-still-in-the-middle-i-suppose#comment-146152</link>
    </item>
    <item>
      <title>"Scala Bowling Kata - still in the middle I suppose" by Diablo3</title>
      <description>&lt;p&gt;hmm ,i&amp;#8217;m not sure if this is what i&amp;#8217;m looking for but anyway this is interresting and could be useful some day,thanks for taking time to write such cool stuff&lt;/p&gt;</description>
      <pubDate>Wed, 14 Sep 2011 12:49:30 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:ef6d4484-84dd-4fec-8358-ee16eb2e0774</guid>
      <link>http://blog.objectmentor.com/articles/2009/10/07/scala-bowling-kata-still-in-the-middle-i-suppose#comment-140140</link>
    </item>
    <item>
      <title>"Scala Bowling Kata - still in the middle I suppose" by bagsupplyer</title>
      <description>&lt;p&gt;It is nice of you to post this.I will pay more attention on it.
&lt;a href="http://www.bagsupplyer.com/Supra-shoes-n272/" rel="nofollow"&gt;New fashion brand replica women Supra casual shoes with top quality from China for wholesale on line store free shipping,more order,more discount&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Sun, 04 Sep 2011 02:42:19 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:3c52d42d-3057-46be-b57c-a86b95dad6d5</guid>
      <link>http://blog.objectmentor.com/articles/2009/10/07/scala-bowling-kata-still-in-the-middle-i-suppose#comment-136813</link>
    </item>
    <item>
      <title>"Scala Bowling Kata - still in the middle I suppose" by beats by dre store</title>
      <description>&lt;p&gt;Dear Admin, I thank you for this informative article.&lt;/p&gt;


	&lt;p&gt;Risk almadan Sermayesiz Evinizden y&#246;netebilece?iniz Kendi i?inizin sahibi olmak istermisiniz ?&lt;a href="http://www.drdrebeatsheadphones-australia.com" rel="nofollow"&gt;high quality headphones&lt;/a&gt;
&lt;a href="http://www.drdrebeatsheadphones-australia.com" rel="nofollow"&gt;new design headphones&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Tue, 23 Aug 2011 03:11:48 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:d9400943-0986-4f43-b31a-d20c5399eea2</guid>
      <link>http://blog.objectmentor.com/articles/2009/10/07/scala-bowling-kata-still-in-the-middle-i-suppose#comment-131661</link>
    </item>
    <item>
      <title>"Scala Bowling Kata - still in the middle I suppose" by Mensagens de Otimismo</title>
      <description>&lt;p&gt;While I am happy I was able to eliminate the variable index, which was actually a parameter that is passed around in a field (ugly), I&amp;#8217;m not happy with this method.&lt;/p&gt;</description>
      <pubDate>Mon, 06 Jun 2011 08:54:28 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:18f258dc-0cd4-4cb7-94c2-68c87478c984</guid>
      <link>http://blog.objectmentor.com/articles/2009/10/07/scala-bowling-kata-still-in-the-middle-i-suppose#comment-108515</link>
    </item>
    <item>
      <title>"Scala Bowling Kata - still in the middle I suppose" by christian louboutin shoes on sale</title>
      <description>&lt;p&gt;Have the &lt;a href="http://www.blacklouboutinshoes.com/pumps-c-2.html" rel="nofollow"&gt;christian louboutin patent leather pumps&lt;/a&gt;  is a happy thing. 
Here have the most complete kinds of  &lt;a href="http://www.blacklouboutinshoes.com/platforms-c-3.html" rel="nofollow"&gt;christian louboutin leather platform pumps&lt;/a&gt;.&lt;/p&gt;</description>
      <pubDate>Thu, 02 Jun 2011 23:19:52 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:33be4f07-46e7-4eb7-a6b6-cdc44aa8e877</guid>
      <link>http://blog.objectmentor.com/articles/2009/10/07/scala-bowling-kata-still-in-the-middle-i-suppose#comment-107431</link>
    </item>
  </channel>
</rss>

