お題:FizzBuzz(Nパターン) を Scala で解いてみた

お題:FizzBuzz(Nパターン)より。

1から100までの数をプリントするプログラムを書け。
ただし、[3, "Fizz", 5, "Buzz", 7, "Hoge"] のような
“<数値>と<文字列>”が対となった、要素が偶数個のリストを受け取り、
数が<数値>の倍数のときは、対となる<文字列>をプリントすること。
数が複数の<数値>の倍数となっている場合、リストに指定された順で、<文字列>を結合しプリントすること。
数がすべての<数値>の倍数でない場合、数をプリントすること。


FizzBuzz はよくある問題。
それの応用問題といったところ。
勉強中の Scala を使って解いてみました。

解けてはいるんだけども、関数型っぽいかどうかと言われるとよくわからない。

以下解答(関数部分、コメントとかは略)

def fizbuzN(lst: List[Tuple2[Int, String]]): Unit = {
  Range(1, 100).toList.foreach(
	i => 
	  if (lst.forall(i%_._1!=0)) {
		println(i)
	  } else {
		lst.foreach(a => if (i%a._1 == 0) print(a._2))
		println
	  }
  )
}

もうちょい上手く書けそうなんだけどだめだったorz