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

Java8でのプログラムの構造を変えるOptional、ただしモナドではない

※ 5/29 3:23 追記:なんかモナドになったかも。最下部参照 さて、Java8での拡張をいろいろ見てきたわけですが、ではアプリケーションプログラムでFunctionを受け取るメソッドをがんがん定義するかというとそういうことはあまりなく、フレームワーク的な部分…

Java8で強化されたMapと、書きやすくなったメモ化再帰

Java8のlambda構文の話を書くと、旧来の書き方でいいというコメントがつくのですが、それでも便利になったMapの恩恵を受けることは多いんじゃないかと思います。 ※ 2018/5/31 Java9からはメモ化再帰には使えなくなっています ※ 2019/2/15 なんか問題ない? M…

Java8のlambda構文がどのようにクロージャーではないか

Java8にlambda構文が入りましたが、これはクロージャーではない、とされています。 では、どのように「クロージャーではない」のか、ちょっと見てみます。 まず、lambdaを返すメソッドを定義します。 public static Supplier<String> createMessenger(String name, S</string>…

Java8で体験するオブジェクトと関数の狭間

Java8でlambda構文が導入されることで、Java言語も関数型のような性質をもつことになりました。 関数型の性質として大事なことのひとつに、関数を戻り値として返せるということがあります。lambda構文によって、Javaでも表記上は関数を戻り値として返すこと…

英単語帳を買ったら思いのほか面白かった

プログラム作業中に困ったときに検索してひっかかった英語の技術文書を読む程度だと、辞書をひくことなく英語が読めるのだけど、技術解説になるとちょっとつらいし、ブログにのってる意見になると知らない単語が増え、ニュースになると知らない単語の頻度が…

Java大好き男に「どのIDEが好き?」と訊ねられたとき、女はどう答えたらいいの?

あ、まず前提として、 貴女がJava大好き男を夢中にさせることが、 はたして貴女を幸福にするかどうか、それはまた別問題だけれど。 とはいえ、Java大好き男たちは玉石混交ながら、 大手SI系の給料高い男なども多く、 したがって、釣り師たる女たちにとっては…

Java8のStreamの目的と書きやすさや可読性、並行処理の効果について

さて、前回Java8のStreamの使い方をざっと見てみたのですけど、はてなブックマークのコメントで「Javaが使われている領域でこんな言語拡張は必要か」「可読性が損なわれていて単なる自己満足ではないか」のようなコメントがついていました。 実際どうなのか…

Java8のStreamを使いこなす

さて、Java8で関数型っぽいことをやって遊んでみたわけですが、実際はそんな書き方しませんよね。 Java8で実際に使うのは、Streamです。 ということで、Streamの使い方をひととおり見てみます。 ※5/17 仕様変更があったので、修正しました 基本 まずは、Iter…

Java 8を関数型っぽく使うためのおまじない

やあ、3月に延期になったとはいえ、Java 8リリースが具体化してきましたね。 もうこれで、Lambdaがはずれるとかいうことはなさそうです。 ところで、Java 8で関数型っぽいことができるようになってうれしいのですが、ちょっと記述が冗長です。ということで…