XP祭り2017のセッションのスライドになります。 http://xpjug.com/xp2017-session-a5-1/ 元ネタは以下です。 http://i2key.hateblo.jp/entry/2017/05/15/082655 ※CCPMの表記について一部誤解を与える部分がありましたので、表記を削除いたしました。 2017/09/21 0:27
![JavaのテストGroovyでいいのではないかという話](https://cdn-ak-scissors.b.st-hatena.com/image/square/cf6b372dcdedf9d3e5ce2201f2931b7a5c04bd15/height=288;version=1;width=512/https%3A%2F%2Fcdn.slidesharecdn.com%2Fss_thumbnails%2Fjavagroovy-160911170127-thumbnail.jpg%3Fwidth%3D640%26height%3D640%26fit%3Dbounds)
(Haskellな日々になってるな…。) モナドというものがあり、Haskellで有名ですが、実際には、Java8のOptional、ScalaのOptionやfor内包表記などでは使用されています。ScalazというScalaのライブラリや、monadlogieというGroovyのライブラリでも使われています。 とはいえ、一般に、Haskellでのように積極的には使われていないというのが公平な見かたでしょう*1。Haskellでは本当にいろんなものがモナド化されています。入出力(IO)、状態、失敗するかもしれない計算(Maybe、Either)、非決定計算、継続、パーサ(モナディックパーサ)、リーダ、ライタ、etc.etc……。 なぜこのような差が生じるのでしょうか? その前に、まず押さえておくべきことは、モナドは非常に汎用的な機能だということです。数学的定義はともかく、機能的に言うと、
先日参加したStartupGroovy #1にて、参加者の方から「Groovyのクロージャはちゃんとしたクロージャか?」という質問がありました*1。 クロージャが「ちゃんとしている」とは何か 「クロージャがちゃんとしてる」とは何を意味するか、あるいは「ちゃんとしたクロージャとは何か」は、良く考えると結構難しい*2です。でもここではあまり厳密に考えないで、 「クロージャ中から参照される変数のスコープと生存期間に関して、『仮にその場所にあるのがクロージャではなくブロックで書かれていた』と想定したとき、それと同じように動作すること」 とでもしておきます*3。オレオレ定義です。 言いかえると、クロージャが「ブロックを偽装したメソッド」だとして、その偽装がうまくいっている、ということです。 さて、Groovyの現在の実装においては、クロージャ中のコード(に対応するバイトコード)は、そのクロージャが置
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く