タグ

Javaとλに関するkiyo_hikoのブックマーク (11)

  • InfoQ: Javaにおけるラムダ:詳細な分析

    実際、Javaには1.1の時代から(インナークラスという形で)クロージャがあります。次のコードを見て下さい。 public interface IFilter { public boolean filter(int x); } public class FilterFactory { public static IFilter greaterThan(final int i) { return new IFilter() { public boolean filter(int x) { // iは語彙的スコープの外部から与えられる return x > i; } }; } } 上記のコードサンプルでは、FilterFactoryにgreaterThanというファクトリメソッドがあり、これは呼び出しに際して引数に関するクロージャを返します。同じコードを異なる引数で呼び出すと、異なるクロージャ

    InfoQ: Javaにおけるラムダ:詳細な分析
    kiyo_hiko
    kiyo_hiko 2014/07/18
    昔のラムダって#だったのか。あと実質的finalはなぜ"暗黙の"finalではなく"実質的"finalなんだろう。あと別サイトでJDK8に載ったラムダは実行時にクラスを作ることを知った → 難読化しても正常にラムダ呼べるってことかしら
  • Java8新機能 ラムダ式とデフォルトメソッドの導入理由 - Yuji Blog

    前々回に次回予告した内容ですw ラムダ式とデフォルトメソッドがどう関係あるのかということですが、まずはラムダ式が追加された経緯から読んでみます。 なぜJavaにラムダ式が追加されたのか Why are lambda expressions being added to Java? ラムダ式(とクロージャ)は最近の様々な言語で人気が出ています。これには様々な理由がありますが、Javaにとって最も差し迫った理由は、コレクションの処理を複数のスレッドで分散処理することです。 現在、ListやSetはCollectionから取得されたIteratorを使ってその要素が一つずつ順番に処理されるのが普通です。 もしそれぞれの要素を並列に処理しようとした場合、その責任を負うのはCollectionではなく、プログラマがそういったコードを書かなくてはいけません。 Java8では、様々な方法で要素を処理する

    Java8新機能 ラムダ式とデフォルトメソッドの導入理由 - Yuji Blog
    kiyo_hiko
    kiyo_hiko 2014/06/12
    "Interfaceにメソッドを追加した場合、それを実装している既存のクラスを変更しなくてはいけなくなります"
  • もしもラムダの中で例外が発生したら(前編) - Taste of Tech Topics

    ある日、 id:cero-t がJJUGの重鎮たちと話している中で、とある宿題をもらいましたとさ。 「Java8のラムダの中で例外が発生したら、どうなるんだろう?」 こんにちは、アキバです。 もう皆さんはJava8を使ってみましたか? とりあえずインストールしてみた人! ・・はーい (おまえか という冗談はさておき、 今回は、id:cero-t に代わって私が冒頭のお題を調べてみました。 1. SerialStreamで動かしたラムダで例外が発生したら まずは、小手調べにシングルスレッドの場合を見てみましょう。 検査例外が発生するようなコードをラムダに書いてみると、コンパイルエラーになります。 こんなコードです。 try (BufferedWriter writer = Files.newBufferedWriter(Paths.get(W_FILENAME))) { // writer.

    もしもラムダの中で例外が発生したら(前編) - Taste of Tech Topics
  • Java8のラムダって高階関数じゃないの?って話 | システムアーキテクトのごった煮

    先日、関Javaに行った時、 「Javaのラムダは高階関数じゃないよ~」って教えて頂きました。 う~ん、確かにJavaは関数をファーストクラスオブジェクトとしてサポートしている訳ではないので、高階関数の定義から外れてしまうんだろうな~。。 ただ、クロージャはレキシカルスコープを伴うファーストクラスなので、完全にJavaは未サポートなんだけど、高階関数は ・引数として関数を取れる ・返り値として関数を返せる なので、Java8のラムダサポートでそれっぽく書けるんじゃないかな~って思ってました。 っで、少し興味がわいたので、Java8で高階関数チックに書いてみました。 まずは、僕が大好きなカリー化。ちなみに、カレーは関係ありません。 カリー化ってハスケル・カリーさんに因んで名付けられたんですね、ややこしい。 カリー化 public class CurryTest { static interf

    Java8のラムダって高階関数じゃないの?って話 | システムアーキテクトのごった煮
  • 遅延評価いうなキャンペーンとかどうか - ぐるぐる~

    遅延評価については以前も書いてるんですが、そのときは結論なしでした。 が、ちょっと考えるところがあって、言語を Java に絞って自分の考えを明確にしておきます。 結論から書きましょう。 「Java(とC#) で遅延評価って書いてあるものは遅延評価ではない」です。 Java における「評価」とは まず一番最初に、Java で「評価」って言うと、どういうことを指すのかを確認しておきます。 言語仕様の該当部分を要約すると、こんな感じでしょうか。 プログラム中の式を評価すると、結果は 変数 値 無し のうちのどれかとなる。 評価した結果が値になる、というのはいいでしょう。それ以外の 2 つを軽く説明します。 評価の結果が「変数」とは? コメント欄で指摘が入っています。 代入の結果は変数ではありません(15.26)。 結果が変数となるのは、ローカル変数、現在のオブジェクトやクラスの変数、フィールド

  • 初心者のためのJavaラムダ式入門とJDKのインストール、IDEの環境構築

    2014年3月18日に一般公開予定のJava SE 8へのバージョンアップでは、新たな表記法として「ラムダ式」が追加されます。このラムダ式を使うことによって効果を発揮する数々のAPIも追加されることになり、今回のバージョンアップはJavaを使う人にとって無視できないバージョンアップとなります。 しかしラムダ式は今までJavaプログラミングをやってきた人でも前提知識なしにソースだけを見て理解するのは難しい内容となっています。この連載では、今までJavaの経験はあっても「ラムダ式は、まだ知らない」という人を対象にラムダ式について解説していきます。 JDK 8は2013年9月10日に開発者向けプレビュー版が公開され、2014年2月18日現在、Early Access版がリリースされています。 コラム「ややこしいJavaのバージョン番号」 Javaのバージョン番号について、ところどころで1.8のよ

    初心者のためのJavaラムダ式入門とJDKのインストール、IDEの環境構築
  • Java SE 8 lambdaで変わる プログラミングスタイル

    福岡JavaOne2013報告会第2弾でのプレゼン ラムダ構文の文法よりも、その使い方とプログラミングスタイルについてを主にまとめました。Read less

    Java SE 8 lambdaで変わる プログラミングスタイル
  • Javaの次世代GUIに注目---JavaOne Tokyo 2012 レポート(後編)

    2012年4月4日から5日にかけて、日で7年ぶりに開催されたJavaOne Tokyoのレポート。前編では、キーノートセッションを中心にレポートしました。後編では、Java SEとJavaFXに関するセッションを中心にレポートします。 Java SE Java SEに関するセッションにはProject CoinなどJava SE 7に関するセッション、Project LambdaなどJava SE 8に関するセッション。また、それ以外のセッションに大別できます。ここでは、Java SE 8に関するセッションから、キーノートでも取り上げられたProject LambdaとProject Jigsawについてレポートします。 Project Lambda: To Multicore and Beyond セッションを担当したのはOracleのDavid Holmes氏。Holmes氏はJav

    Javaの次世代GUIに注目---JavaOne Tokyo 2012 レポート(後編)
    kiyo_hiko
    kiyo_hiko 2012/04/19
    「students.parallel().filter(s -> s.getGradYear() == 2011).map(s -> s.getScore()).max();」…すごくいい感じ
  • Java ラムダ式のシンタックスの第一バージョンが議論に火をつける

    Spring BootによるAPIバックエンド構築実践ガイド 第2版 何千人もの開発者が、InfoQのミニブック「Practical Guide to Building an API Back End with Spring Boot」から、Spring Bootを使ったREST API構築の基礎を学んだ。このでは、出版時に新しくリリースされたバージョンである Spring Boot 2 を使用している。しかし、Spring Boot3が最近リリースされ、重要な変...

    Java ラムダ式のシンタックスの第一バージョンが議論に火をつける
    kiyo_hiko
    kiyo_hiko 2011/07/29
    訳わからん。Perlの無名関数の方がまだ読みやすい気がする。lambdaはポリモーフィズムと相性が良さそうな気がするけどどうなんだろう
  • タマゴの白身  java7のクロージャーがあまりに残念な状況。。。

  • はてなブログ | 無料ブログを作成しよう

    トルコ水紀行 -前編 イスタンブール- みなさんこんばんは、地図子です!8月は久しぶりに毎月更新にしようと思います。今までずっと名古屋について書いてきましたが、ワープして・・・ トルコについて書きたいと思います。 2024年6月に念願のトルコに行ってきました。いつからトルコに行きたかったかわから…

    はてなブログ | 無料ブログを作成しよう
  • 1