Exercises in Programming Style–Infinite Mirror

NOTE : read the rest of the series, or check out the source code.

If you enjoy read­ing these exer­cises then please buy Crista’s book to sup­port her work.

exercises-prog-styles-cover

Fol­low­ing on from the last post, we will look at the Infinite Mirror style today.

 

Style 7 – Infinite Mirror

This style is really all about recursions.

Constraints

  • All, or a significant part, of the problem is modelled using induction.

 

First, let’s get the list of stop words and put them in a set:

image

and then we will implement the counting logic using recursion:

image

I made some adjustments to Crista’s version here. In her version, wordFreqs is a global state that has been passed in as argument but the recursive count function returns nothing.

In my implementation, although I’m still using a mutable dictionary, it’s an implementation detail that is not exposed to the outside world. I could have used a Map here instead, but constantly updating a Map is really clumsy, plus Map performs really poorly in this type of use pattern.

 

Then we have another recursive functions, for printing out the word frequencies:

image

and then some code to tie everything together:

image

 

You can find all the source code for this exer­cise here.

2 Comments

  1. Pingback: Exercises in Programming Style–Kick Forward | theburningmonk.com

  2. Pingback: F# Weekly #45, 2015 | Sergey Tihon's Blog

Leave a Reply

Your email address will not be published.