週末に「プログラミングGROOVY」を読んでGROOVYに入門したのだ。
で、
に書いてあるコードが読めるようになったのだ。なので勉強がてら
の「無限の構造」のところをコピペしてきてグニグニしてみた。
こうしたら動くのかな・・・動かない(´・ω・`)
とか遊び倒したコードの残骸。
こうしたら動くのかな・・・動かない(´・ω・`)
とか遊び倒したコードの残骸。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class LazyList { | |
def car | |
private Closure cdr | |
def LazyList next() { cdr() } | |
def List take(n) { | |
def r = []; def l = this | |
(1..n).each{ r << l.car; l++ } | |
return r | |
} | |
def LazyList filter(Closure pred) { | |
return pred(car) ? new LazyList(car:car, cdr:{ next().filter(pred) }): next().filter(pred) | |
} | |
} | |
def integers(n) { new LazyList(car:n, cdr:{ integers(n+1) }) } | |
def fizzBuzz = {it%15?it%3?it%5?it:'Buzz':'Fizz':'FizzBuzz'} | |
assert [5,10,20,25,35,40,50,55,65,70] == integers(1).filter{ fizzBuzz(it) == 'Buzz' }.take(10) |
0 件のコメント:
コメントを投稿