2013年5月2日木曜日

「「Java 8を関数型っぽく使うためのおまじない」をGroovyでやってみた」をGroovyにした

バイク川崎バイク:「ブンブン」

きしださんのエントリー「Java 8を関数型っぽく使うためのおまじない」のいろんなバージョンが出ていますね。

Java 8を関数型っぽく使うためのおまじないをF#でやってみた

Java 8を関数型っぽく使うためのおまじないをGroovyでやってみた


というわけで、僕もとおもったんだけど、

関数型いまいちわからんので、


『「「Java 8を関数型っぽく使うためのおまじない」をGroovyでやってみた」をGroovyにした』と題してやってみた。


String.metaClass.define {
enclose = {
"[${delegate}]" as String
}
}
assert '[foo]' == 'foo'.enclose()
assert 'Foo' == 'foo'.capitalize()
assert '[Foo]' == 'foo'.capitalize().enclose()
String.metaClass.define {
middle = {
delegate.substring(delegate.size() / 3 as int, delegate.size() * 2 / 3 as int)
}
}
assert 'foo' == 'fizfoobar'.middle()
assert '[Foo]' == 'fizfoobar'.middle().capitalize().enclose()
String.metaClass.define {
sandwich = {enc ->
"${enc}${delegate}${enc}" as String
}
}
assert 'バイク川崎バイク' == '川崎'.sandwich('バイク')
/*
* カリー化 != 部分適用
*/
String.metaClass.define {
haskell = {pre ->
def item = delegate
return {post -> "$pre$item$post" as String}
}
haskell = {pre, post ->
"$pre$delegate$post" as String
}
}
assert 'ばいく川崎バイク' == '川崎'.haskell('ばいく')('バイク')
assert 'ばいく川崎バイク' == '川崎'.haskell('ばいく', 'バイク')



とちゅうで終わってるのは、眠いから。

…ひどいなコレ(´・ω・`)

0 件のコメント:

コメントを投稿