uehaj's blog

Grな日々 - GroovyとかGrailsとかElmとかRustとかHaskellとかReactとかFregeとかJavaとか -

2011-01-01から1ヶ月間の記事一覧

DevLOVEぐるぐるGroovyで「気楽に使おうGroovy」の再演をしてきました

1/24日、DevLOVEのぐるぐるGroovyでCCCでやった「気楽に使おうGroovy」の再演をしてまいりました。会場を提供いただきましたクラスメソッドさま、参加者のみなさん、DevLOVEのみなさん、ありがとうございました。様子をid:kimoku26さんがTogetterしてくれま…

Closure#trampoline()続き

昨日trampoline()について書きましたが、今日はtrampoline()で相互再帰もできますという話。まずはtrampoilne()使わないバージョン。 oddp = { n -> if (n==0) { false } else evenp(n -1) } evenp = { n -> if (n == 0) { true } else oddp(n - 1) } printl…

Closure#trampoline()とは何か

Closure#trampoline()はGroovy 1.8の新機能の1つです。何かっていうと、「明示的な末尾再帰の指定*1」を行うためのものです。これを使うと実際には再帰じゃなくなります。ループになります。スタックを消費しなくなります。だから正確に言うと、「いっけん再…

第14回G*ワークショップ

今月のG*WSが周知されてます。1月31日 第14回 G*ワークショップ(東京都) 1.「Groovy&Grails exchange 2010@Londonへ行ってきた報告!」by tyama, tamada (ニューキャスト) 2010年12月に開催された「Groovy&Grails exchange 2010」に参加してきましたので、…

Fieldアノテーションって何?

Groovy 1.8.0 beta 2 から@Field*1というAST変換アノテーションが使えるようになっています。これは何かといいますと、いままではスクリプト中で int x = 3 def y() { println x } y() の様に書くとエラーになっていました。なぜならxは、このスクリプトが実…

ANTLRパーサプラグインでGroovyコードを加工

メーリングリストを眺めてたら目にとまった、「ANTLRパーサプラグインを作成して、Groovyコードに任意の加工を行う」というテクニックをご紹介。Groovy web console - Custom antlr parser pluginここではメソッド呼び出しの括弧を挿入しているようです(GEP3…

[groovy][kobo] koboプロジェクトの成果がGroovy 1.8の機能に影響を与えたのだと

我らがJGGUG/koboプロジェクトの成果の一つに、kobo-commonsプロジェクトというのがあります。ここではいくつかのAST変換のアノテーション含む機能群を開発しているのですが、@Equivアノテーションというのもその1つです。 つらつらと調べものをしてたら、Pa…

速いぞGroovy!

Javaと同等レベルに高速に実行できるGroovyコードを書く方法が紹介されてます。 Yes, Fibonacci in Groovy can be as fast as Java ! こんなスクリプトです。 @ast.Bytecode int fib(int i) { l0 iload 1 iconst_2 if_icmpge l1 iconst_1 _goto l2 l1 frame …

MacBook Air 11インチ欲しい!

MacBook Air 11インチ欲しい! 小学生のとき、一夏中ルパン3世アイスを食いまくってゲームウォッチが当らなかったあの日に抽選というもの全てに対して生涯何の希望も持つこともやめたんだった。でも応募が簡単なのはいいね。