IIJの技術者はセミナーや講演会等において、IIJの持つ技術力や独自研究開発、最新の技術動向について広く発信し、インターネットの発展に尽力しています。
![関数プログラミングが教えてくれる規律](https://cdn-ak-scissors.b.st-hatena.com/image/square/471ee4d0ea1a43fc4ccf1ec9e34b1cd65b581419/height=288;version=1;width=512/https%3A%2F%2Fwww.iij.ad.jp%2Fcommon%2Fimages%2Fogp_image.png)
関数型言語とオブジェクト指向は相容れない,という説をよく聞く。たしかに「オブジェクトは状態を持つ」「関数型プログラミングでは,できるだけ破壊的代入を行わない」とすれば,二つの概念は矛盾しているようにも思われる。また,技術的観点以外にも,「とかくシンプルさを好む多くの関数型言語プログラマが,何かと物事を複雑にする(と思われている)オブジェクト指向を嫌っている」という面があるかもしれない。 しかし,個人の好き嫌いはさておき,実際問題として,関数型言語とオブジェクト指向は大いに関係がある。むしろ,基礎理論については,ほとんど同じコミュニティの人たちが取り組んでいる,と言ってもいい。例えば,以下のような研究が,1980年代から現在に至るまで行われている。 関数型言語のモデルであるλ計算という体系において,オブジェクトを表現する研究(参考リンクなど) λ計算にならい,(プロトタイプベースの)オブジェ
追記:Amazonのリンクを張っていますが、オーム社のサイト http://estore.ohmsha.co.jp/titles/978427406911P からも購入できます。 AmazonのKindle版はまだ出ていないようですが、 こちらからは今現在でDRMなしのPDFも購入できます。 Kindle版リリースの際にも、 フローレイアウトになる予定はないそうですので、 Amazonにこだわりがあるのでなければ、 電子版で読みたいという方は、こちらから購入されるのが良いかと思います。 あらかじめお断りしておきますと、 この記事は書評ではなく、宣伝です。 数年前に原著を読んだ時から、 本書は私の中では間違いなく良書ということになっておりますので、 私がいまさら内容の善し悪しを語ることには、 はじめから意味がないと思っております。 なのでここでは、この本の魅力、読んで欲しい人、どういう風に読
はじめに断っておくが、全部Pros/Consのあるデザインチョイスなので、こうじゃなきゃいけないってことではない。ただ、 OCaml はこの選択をした、そいう事だ。 前回の「経験15年の OCaml ユーザーが Haskell を仕事で半年使ってみた」 http://d.hatena.ne.jp/camlspotter/20101212/1292165692 のような易しい文章ではないのでわからない人はとことん判らないだろう。まあ勘弁して欲しい。 あと、面倒だろうが、読む人は全部常体を敬体にして最後に「と思います」をつけて読んでくれ。ください、と思います。 Shadowing は便利であると思っている OCaml の let は非再帰なので以前定義された名前に別の値の束縛をオーバーライドできる。OCaml の人はこれが便利だと思っており皆普通に使っている。詳しくは http://d.hat
やあ、3月に延期になったとはいえ、Java 8リリースが具体化してきましたね。 もうこれで、Lambdaがはずれるとかいうことはなさそうです。 ところで、Java 8で関数型っぽいことができるようになってうれしいのですが、ちょっと記述が冗長です。ということで、短く書けるおまじない考えてみました。 Function型 さて、まずはJava 8で標準で入ったFunction型をみてみましょう。パッケージ名まで含めるとjava.util.funciton.Functionです。 こんな感じで使います。 Function<String, String> enclose = s -> "[" + s + "]"; Genericsでの型指定の最初が引数、あとが戻り値の型です。ここではStringをとってStringを返す関数としてencloseを定義しています。 これを呼び出そうとすると、こんな感じ
はじめに 関数型といえばモナド、モナドといえば難しいという事が巷で言われていますが、いきなりモナドを理解しようとするから難しく思えるだけで、圏論から順序を追って理解していけば全然難しく無いんだよって事を分かって貰えればいいなぁと思い書いて見ることにしました。 ただ、圏論といっても適用範囲がとっても広く、応用編になると分けわかんなくなってくるので、ここではプログラミング分野に特化したFP(functional programing)圏論*1について書きます。 また、説明を簡単にする為に細かい部分をいろいろ省略しています。学術的な定義としては正確ではないので、このエントリの説明は大体合ってる位の気持ちで読んでくださいね。 尚、ぼくは圏論の詳しい事はさっぱり分からないので、学問的な話を振られても回答できませんキリッ 圏ってなんなの? 圏論と言えば、圏です。 圏って何なのかというと、対象(obje
java-ja.ddd - connpass 2013/03/22 java-ja.ddd #java_ja #java_ja_ddd - Togetter java-ja.ddd面白かったです。色々と得るものがありました。発表者の方々、有り難うございました。 会場を提供して頂いたGREEさんありがとう。運営のみなさまお疲れ様。 で、一番最後に、「関数型言語をDisって逃げる」ということで発表者の一人である増田亨さんがごく短い時間お話しされました。 その内容があまりにも自分にとって納得しかねるものだったので、ブログにアウトプットします。 「関数型言語Dis」の中で、増田さんがされた主張は以下2点です。 関数型言語ユーザーは業務の話ができない 関数型言語は記号を多用しすぎる 関数型言語が、どの言語を指しているのかがまず不明ですが、そこは置いておいて。 まず一点目、「関数型言語ユーザーは業務の
僕はよく「関数プログラミングの入門書には何がいいか」という質問を受ける。そのときは必ずこの本(と他のいくつか)を答えるようにしている。書評を書いたつもりになっていが、検索してみると書いてないようなので、反省して良書を紹介してみようと思う。 プログラミングの基礎 ((Computer Science Library)) 作者: 浅井健一出版社/メーカー: サイエンス社発売日: 2007/03/01メディア: 単行本購入: 17人 クリック: 409回この商品を含むブログ (127件) を見る 本書はプログラミングの経験のない人を対象としており、書名通りプログラミングの基礎が説明されている。使用する言語は OCaml である。著者の浅井先生は、お茶の水女子大学でプログラミングを教えている。授業の経験を元にした本にはよくあることだが、内容が実に整然としており、例題がこなれている。 初心者を対象と
いよいよ反応プログラミングの核心に入って行きます。前回までの復習。 id:propella:20070304:p1 SOE 15 章 A Module of Reactive Animations id:propella:20070305:p1 SOE 15.2 章 Implementing FAL id:propella:20070306:p1 SOE 14 章ストリーム プログラムは振る舞い (Behavior) を組み合わせて作る。 Behavior は動作 (UserAction) と時間 (Time) の組を受け取りある値を返す関数 Behavior の引数も返り値もストリーム Behavior に イベント(Event) を設定した物は Behavior である。 Event は Behavior の返り値が Maybe 型の物。 Behavior と Event を組み合わせ
はじめに こんにちは、Python界の情弱です。ちょっと前にOCaml系のエントリを色々と眺めていたらYaron Minsky氏のエントリを見つけたので翻訳してみました。 OCaml for the Masses - ACM Queue Yaron Minsky氏はJane Streetで第一線で活躍されるエンジニアで、Jane Streetの技術ページをはじめ多くの場所でOCamlに関しての知見を語ってくださっています。 Jane Street Tech Blogs 本エントリはJohn Hughesの名エントリ「なぜ関数プログラミングは重要か」を受けてACM Queueに寄稿されたものの日本語訳です。 なぜ関数プログラミングは重要か Why the next language you learn should be functional YARON MINSKY, JANE STREE
この中でカール・ヒューイットが設計した規則ベースの言語 Planner はあまりに複雑な機構を持っていたため当初設計された全機能の実装は困難であり[注釈 9]、サスマン等はそれをサブセット言語の Micro-Planner として実現し、さらには、 Planner の流れを汲んだ独自言語として Conniver を作成した。 同じくカール・ヒューイットが設計したアクタ言語 Plasma (Planner-73) も複雑な機構を持っていたため、MacLisp による実装が存在したものの、その動作の仕組みを理解するのは困難であった。サスマン及びガイ・スティール・ジュニアは Plasma を理解するために、不要な機能を省いた LISP 構文を持つ小さな Plasma を設計した。 上記の Plasma からその小さな Plasma の設計に至る過程は Planner から Micro-Plann
みなさま、ご無沙汰しております。1ヶ月以上ぶりのブログ更新となりました。Python界の情弱こと山口です。 この度、拙訳の「Java開発者のための関数プログラミング」という書籍がオライリー・ジャパンより電子書籍(ePub)で出版される運びとなりました。原著者はProgramming Scala(日本語版「プログラミングScala」)のDean Wampler氏。 Java開発者のための関数プログラミングDean Wampler 著、山口能迪、株式会社トップスタジオ 訳 フォーマット ePub O'Reilly で詳細を見る Java開発者のための関数プログラミング - Google+ 本書は、無理をしてJavaで関数プログラミングで実装してがんばろう、という本ではありません。一部そういうところもあるかもしれませんが、そういう方向は目指していません。あくまで関数型と呼ばれるものにはどういう概
By plushoff under CC BY-NC 山口さんから、「Java開発者のための関数プログラミング」の電子献本をいただきました。ありがとうございます。電子書籍便利ですね。アメリカにいても日本語の本が手に入る!しかも、すごいこなれた日本語になっているし、注釈もばっちりついて読みやすいです。仕事のできる男の風格を感じます。 本人のブログ: http://ymotongpoo.hatenablog.com/entry/20120621/1340233739 オライリーの書籍ページ: http://www.oreilly.co.jp/books/9784873115405/ この本を楽しく読んでいたところ、山口さんから別の面白いリンクを教えてもらいました。 Why OO Sucks (なぜオブジェクト指向はクソなのか) Erlangの開発者のJoe Armstrongの記事です。本当は
2012-08-21 John Wiegley さんの “Monads in Pictures” を翻訳しました。翻訳の公開は本人より許諾済みです。翻訳の間違い等があれば遠慮なくご指摘ください。 2012年8月20日 John Wiegley 著 2012年8月21日 e.e d3si9n 訳 これはモナドのチュートリアルではないし、ここには数学用語も出てこない。本稿は、既にモナドを一応使えるぐらいには習った人を対象とする。視覚化することで、何のために何をやっているかが明らかになるはずだ。 関数 モナドに対する直感を得る一つの方法として関数からモナドへの抽象化をたどるというものがある。関数が何をやっているのかを簡単な絵で表してみよう。Haskell の関数の呼び出しの構文を上に、同じ演算を視覚化したものを下に置いた: 関数はある値 a を投射 (map) して別の値 b を得る。中で何が起
言語を利用するための条件は以下の3つになると思う。つまり、言語が普及するための条件とも考えられる。 使用するための必要条件を満たしているか その言語を使用するメリットがあるか デメリットはないか 例えば、D言語はシステム言語であるので、使用するための条件は、パフォーマンス、ライブラリの充実度などだと思う。そして、メリットは、簡単でパフォーマンスが良いことだと思う。D言語がいまいち普及していないのは、恐らくライブラリの充実度に問題があるのと、言語仕様が難しすぎるというデメリットのためではないか? 同じく関数型言語が普及していないのは、プログラムに慣れるまで時間がかかるというデメリットがあるのに対して、メリットがないからだと思う。 あと、まず関数型言語をもう少し普及させるには、手続き型言語のプログラムを1対1で関数型言語のプログラムに置き換えるための知識が必要となる。forループは、以下のよう
http://d.hatena.ne.jp/kura-replace/20111114/1321236695 ああ、うん。つまるところそうなのよね。 多分言語進化の系統樹の殆ど根っこから分岐してるから、枝から枝に移るのが超大変なんだと思う。 http://developers.slashdot.jp/comments.pl?sid=562361&cid=2114390 論理重視で言語設計されてるから、論理がわからないが為に業務に必要なものを誰も作らない。 結果実用から離れてしまう。そしたら趣味で使うだけになる。それを趣味でやる人なんて限られる。 悪循環ですねー 秀逸だと思ったコメント 一般に原理主義に走ると、だいたい使いにくくなる。 別に関数に限った話ではないのですが、、、良く分かる。
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く