タグ

関数型に関するkimutanskのブックマーク (8)

  • クロージャやラムダ式を理解していない組込エンジニアが関数型言語を理解するチャレンジングな4冊(+6冊+α) - ひつじのにっき

    手続き型言語を主なフィールドとして頑張ってきた組み込みエンジニアが関数型言語に興味を持ったので相談したら以下の4冊(+6冊)のを薦められました。順次読んでいきます。多分にチョイスが偏ってます(ので、随時補正を取り込んで下に追記してます。初出は6冊だったのですが現時点で10冊。お好みでどうぞ。一部はWebで公開されていると教えていただいたのでリンクを足しておきました。一夜明けて、さらに参考文献が沢山きたので追記しました)。 ただ全てのを連続的に読むことでタイトルのように関数型言語がわかった!みたいな意味を成すかはわかりません(しばらくまって結果を見たほうが参考になるはずです)。1冊か章の区切りかでまとめていくので一緒に読んでくれたりお勧めのを教えてくれたり、誤った理解をなおしてくれると更に喜びます。とりあえず全部買ったので今からスタートです (追記:関数型言語、という入り口から入るなら

    クロージャやラムダ式を理解していない組込エンジニアが関数型言語を理解するチャレンジングな4冊(+6冊+α) - ひつじのにっき
    kimutansk
    kimutansk 2013/10/25
    いつかこのあたりにも手を出したいところですが・・・
  • Java SE 8 で関数合成 - なんとなくな Developer のメモ

    以前 に Groovy や Scala 等で実施した関数合成と同様の処理を Java 8 で試してみました。 Java SE 8 EA b102 (現時点の最新は b104 のようです) サンプルソースは http://github.com/fits/try_samples/tree/master/blog/20130901/ andThen と compose Java 8 では Scala と同様に andThen や compose メソッドを使います。 処理の実行にも apply メソッドを使いますが、Scala のようなメソッド名の省略はできません。 なお、andThen・compose メソッドは java.util.function.Function インターフェース等にデフォルト実装されています。 ComposeSample.java import java.util.fu

    Java SE 8 で関数合成 - なんとなくな Developer のメモ
  • マルチコア時代のプログラマは関数脳になろう〜Scala・Clojure〜 - Tech-Sketch

    前回 の記事では、関数型プログラミングの概念とJava8による実装例を示しました。しかしJava8のリリースは来年まで延期されてしまったため、今すぐ試してみるには少しハードルが高いかもしれません。 そこで今回は、Java7のJVM上で動作する代表的な関数型プログラミング言語、 Scala と Clojure を紹介します。 Scalaとは では、 Scala から紹介しましょう。 ScalaはJVM上で動作するプログラミング言語で、関数型の特徴とオブジェクト指向の特徴を合わせ持った、欲張りな言語です。 JVM上で動作するため、既存の膨大なJavaライブラリをそのまま流用でき、JVMのパフォーマンスチューニングノウハウを最大限活用することができます。またJavaよりも豊富な記述形式を持ちながらもJavaオブジェクトをそのまま扱え、強力な型推論を持った静的型付け言語でもあるため、定型的で冗

    kimutansk
    kimutansk 2013/08/19
    単純に並列処理をやるという意味では関数型への対応は限定的で、並列処理に絞ったJava8の方が早くなる・・というわけですかね。
  • マルチコア時代のプログラマは関数脳になろう〜Java8のススメ〜 - Tech-Sketch

    CPUのクロックアップに限界が訪れ、マルチコア化することで処理性能向上を目指す時代になりました。これからのプログラマには、マルチコアで処理性能が向上するプログラム=マルチスレッドで並列処理が可能なプログラムを書く能力が必要になります。今回は「関数型」でプログラムを書くことによって、いとも簡単に並列化ができることを実例を元に解説します。 関数型プログラミングと並列処理 「関数型でプログラムを書くことで簡単に並列化できる」と書きましたが、そもそもここで言う「関数」とは何なのでしょうか? 関数型プログラミングの特徴 関数型プログラミングの「関数」を理解するためには、数学における「関数」を想像するとわかりやすいでしょう。 例えば三角関数を用いた y=cos(x) という式を考えてみます。この式に入力値 x=0 を与えた場合、いつでも必ず結果は y=1 になります。x= π/3 の場合は y =

    kimutansk
    kimutansk 2013/08/12
    これは丁寧に書いてありますね・・・ そして次回がScalaとClojureということで楽しみです。個人的にはJavaは7を最後にScala/Clojureに乗り換えたいところではありますがw
  • Java 8 を関数型っぽく使うための(中略)をClojureでやってみた - Code Aquarium

    はじめに このエントリーは、Java8のlambda式についてのエントリー派生シリーズへの便乗記事です。まだ下の記事を見ていない方はリンク先を見ておいてください、そうしないと意味がわかりません。 Java 8を関数型っぽく使うためのおまじない - きしだのはてな Java 8を関数型っぽく使うためのおまじないをF#でやってみた - ぐるぐる~ Java 8 を関数型っぽく使うためのおまじないを F# でやってみたを Scheme でやってみた - 月の塵 SchemeがあるならClojureがあってもいいですよね。 なお、エントリーは 2013年5月時点の最新バージョンである Clojure 1.5.1にて検証しています。 IFn型 (インターフェース) Clojureでは関数のように振る舞うオブジェクトはIFn*1というインターフェースを実装します。パッケージ名まで含めると cloju

    Java 8 を関数型っぽく使うための(中略)をClojureでやってみた - Code Aquarium
    kimutansk
    kimutansk 2013/07/25
    途中までは非常によくわかったのですが、defmacroの書き方がさっぱりなのでそこから頓挫w defmacro学んだらまた見ましょう。
  • Java 8は関数型なのか

    ITproの読者には既にご存じの方も多いと思うが、2014年3月に「Java SE」の次期版「Java SE 8」(以下、Java 8)がリリース予定である。国内のエンタープライズ分野では「レガシーJava」が多いとされ、現行版の「Java SE 7」に移行しているユーザーすら少数派と聞く。Java 8といっても遠い話のように感じる方も多いかもしれない。 しかし、Java 8はJavaにとって一つの大きなマイルストーンとなる。関数型プログラミングに由来する「ラムダ(lambda)式」なる構文が導入されるのだ。 Javaをよく知る技術者の方の中には、「いや、Java 8のラムダ式は関数型プログラミングのために導入されたのではない」と主張される方がいるだろう。この点については後ほど触れたいと思うが、「ラムダ式が何のために導入されたか」はさておき、ラムダ式という記法そのものが「関数型に由来する」

    Java 8は関数型なのか
    kimutansk
    kimutansk 2013/07/18
    裏話についてはなるほど、という感じです。今はまだまだ序章に過ぎないと。
  • 奇跡のJava

    アプリケーションの最も基的な部分を支える開発基盤が大きく変わろうとしている。主役は「二つのJava」だ。Javaを基に、関数型という先進技術を導入した「Scala」。Scalaに触発されて関数型のアイデアを取り入れたJavaの次期版「Java 8」。この二つが互いに影響を及ぼしながら、来ならトレードオフの関係にある「高生産性」「高品質」を両立できる新たな基盤を実現しようとしている。三菱UFJフィナンシャル・グループのように利用を始めた企業も出てきた。情報システム部門として二つのJavaを生かさない手はない。 (進藤 智則) 記事は日経コンピュータ7月11日号からの抜粋です。そのため図や表が一部割愛されていることをあらかじめご了承ください。「特集」の全文は、日経BPストアの【無料】特別編集版(電子版)で、PCやスマートフォンにて、7月18日よりお読みいただけます。なお号のご購入はバ

    奇跡のJava
    kimutansk
    kimutansk 2013/07/11
    関数型言語とJavaとの組み合わせでそれなりに効果はあるにしても、タイトル的にかなり胡散臭いものを感じてしまう今日この頃。万能ではないんですが。
  • [関数型言語のトレンド]国内でも採用企業が増加

    「少数精鋭の開発メンバーで、短期間に新しい検索サービスを始められた」。特許情報などの無料検索サービスで200万人以上の会員を抱えるアスタミューゼ。同社でサービス開発を統括する三木隆史プラットフォーム事業部部長は、こう語る。スピードの秘密は、開発言語選びにあった。 同社が採用したのは、業務系システムの開発で主流になっているJavaでも、Webシステムで人気を博すRubyPythonでもない。「関数型プログラミング言語」と呼ばれるオープンソースの開発言語の一つ、「Scala(スカラ)」だ。 Scalaは今、世界的な注目を集める。米ツイッターや米リンクトイン、英ガーディアンなど海外の名だたる企業が自社サービスの開発に採用したことで一気にその名を知らしめた。Scalaの推進企業である米タイプセーフは2012年8月に1400万米ドル(約11億円)の資金を調達。Webアプリケーションや分散処理システ

    [関数型言語のトレンド]国内でも採用企業が増加
    kimutansk
    kimutansk 2013/06/05
    次主流になるかはさておき、Javaに安住し続けて他の言語のプロダクトが見えなくなるのはNGなんでしょうね。というかJavaだけでは刺激が足りないとも言いますがw
  • 1