タグ

functionalに関するrydotのブックマーク (112)

  • 書評「型システム入門」 - 純粋関数空間

    追記:Amazonのリンクを張っていますが、オーム社のサイト http://estore.ohmsha.co.jp/titles/978427406911P からも購入できます。 AmazonKindle版はまだ出ていないようですが、 こちらからは今現在でDRMなしのPDFも購入できます。 Kindle版リリースの際にも、 フローレイアウトになる予定はないそうですので、 Amazonにこだわりがあるのでなければ、 電子版で読みたいという方は、こちらから購入されるのが良いかと思います。 あらかじめお断りしておきますと、 この記事は書評ではなく、宣伝です。 数年前に原著を読んだ時から、 書は私の中では間違いなく良書ということになっておりますので、 私がいまさら内容の善し悪しを語ることには、 はじめから意味がないと思っております。 なのでここでは、このの魅力、読んで欲しい人、どういう風に読

  • OCaml の let と let rec はなぜ別扱いになっているのか、決定版、もしくは OCaml 暦十何年だったか忘れたけど仕事で Haskell を一年使ってみた - camlspotter’s blog

    はじめに断っておくが、全部Pros/Consのあるデザインチョイスなので、こうじゃなきゃいけないってことではない。ただ、 OCaml はこの選択をした、そいう事だ。 前回の「経験15年の OCaml ユーザーが Haskell を仕事で半年使ってみた」 http://d.hatena.ne.jp/camlspotter/20101212/1292165692 のような易しい文章ではないのでわからない人はとことん判らないだろう。まあ勘弁して欲しい。 あと、面倒だろうが、読む人は全部常体を敬体にして最後に「と思います」をつけて読んでくれ。ください、と思います。 Shadowing は便利であると思っている OCaml の let は非再帰なので以前定義された名前に別の値の束縛をオーバーライドできる。OCaml の人はこれが便利だと思っており皆普通に使っている。詳しくは http://d.hat

    OCaml の let と let rec はなぜ別扱いになっているのか、決定版、もしくは OCaml 暦十何年だったか忘れたけど仕事で Haskell を一年使ってみた - camlspotter’s blog
  • Java 8を関数型っぽく使うためのおまじないをF#でやってみた - ぐるぐる~

    Java 8を関数型っぽく使うためのおまじない - きしだのはてな Java 8を関数型っぽく使うためのおまじないをC#でやってみた - ぐるぐる~ Java も C# も大変ですね。 F# さんは、ラムダ式も関数型も最初から使えたので、似たようなことはすでにできます。 上記の記事のパクリなので、上記の記事をまずは読んでから読むことをおすすめします。 関数型(関数を表す型の方) F# では FSharpFunc という型があります。名前空間や型パラメータまで含めると、Microsoft.FSharp.Core.FSharpFunc<'T, 'U> です。 ただ、この型を直接使うことはありませんし、見ることもそうそうないです。 その代わりに、'T -> 'U という表記が使えます。「'T を受け取って 'U を返す関数」と読みます。 ちなみに、型パラメータの最初に「'」が付いているのが割と大

    Java 8を関数型っぽく使うためのおまじないをF#でやってみた - ぐるぐる~
  • Java 8を関数型っぽく使うためのおまじない - きしだのHatena

    やあ、3月に延期になったとはいえ、Java 8リリースが具体化してきましたね。 もうこれで、Lambdaがはずれるとかいうことはなさそうです。 ところで、Java 8で関数型っぽいことができるようになってうれしいのですが、ちょっと記述が冗長です。ということで、短く書けるおまじない考えてみました。 Function型 さて、まずはJava 8で標準で入ったFunction型をみてみましょう。パッケージ名まで含めるとjava.util.funciton.Functionです。 こんな感じで使います。 Function<String, String> enclose = s -> "[" + s + "]"; Genericsでの型指定の最初が引数、あとが戻り値の型です。ここではStringをとってStringを返す関数としてencloseを定義しています。 これを呼び出そうとすると、こんな感じ

    Java 8を関数型っぽく使うためのおまじない - きしだのHatena
  • Qi - Lisp for 21 Century

    2008年11月に導入され、Common Lisp によって実装された言語です。 Qi II は効率的で型安全な Lisp プログラムを生成し、そのプログラムはいかなるマシン上でも動作させることができます。 Qi II は私が2005年4月に導入したQi Iをさらに進化させたものです。 たくさん: Qi II は CAR / CDR を強制しない。かわりに、パターンマッチを使う事ができる。典型的な Qi プログラムは Lisp プログラムと比較して非空白文字が40%程度になる。 Qi II はオプショナルな静的型チェックを備えている。実際のアプリケーションで、「神さま、プログラムが型エラーでクラッシュしませんように…」と祈る必要がなくなる。 Qi II はラムダ計算と一貫性がある。Common Lisp で部分適用のような概念が利用できる。 Qi II はとても速いコードを生成する。

    rydot
    rydot 2013/04/09
    なんかすごそう。
  • 圏論とかモナドなんて簡単だからscalaを使って説明してみた - だらだらしてたいなぁ

    はじめに 関数型といえばモナド、モナドといえば難しいという事が巷で言われていますが、いきなりモナドを理解しようとするから難しく思えるだけで、圏論から順序を追って理解していけば全然難しく無いんだよって事を分かって貰えればいいなぁと思い書いて見ることにしました。 ただ、圏論といっても適用範囲がとっても広く、応用編になると分けわかんなくなってくるので、ここではプログラミング分野に特化したFP(functional programing)圏論*1について書きます。 また、説明を簡単にする為に細かい部分をいろいろ省略しています。学術的な定義としては正確ではないので、このエントリの説明は大体合ってる位の気持ちで読んでくださいね。 尚、ぼくは圏論の詳しい事はさっぱり分からないので、学問的な話を振られても回答できませんキリッ 圏ってなんなの? 圏論と言えば、圏です。 圏って何なのかというと、対象(obje

    圏論とかモナドなんて簡単だからscalaを使って説明してみた - だらだらしてたいなぁ
  • LLerのための関数指向入門

    You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

    LLerのための関数指向入門
  • java-ja.dddの最後の「関数型言語Dis(?)」について - ( ꒪⌓꒪) ゆるよろ日記

    java-ja.ddd - connpass 2013/03/22 java-ja.ddd #java_ja #java_ja_ddd - Togetter java-ja.ddd面白かったです。色々と得るものがありました。発表者の方々、有り難うございました。 会場を提供して頂いたGREEさんありがとう。運営のみなさまお疲れ様。 で、一番最後に、「関数型言語をDisって逃げる」ということで発表者の一人である増田亨さんがごく短い時間お話しされました。 その内容があまりにも自分にとって納得しかねるものだったので、ブログにアウトプットします。 「関数型言語Dis」の中で、増田さんがされた主張は以下2点です。 関数型言語ユーザーは業務の話ができない 関数型言語は記号を多用しすぎる 関数型言語が、どの言語を指しているのかがまず不明ですが、そこは置いておいて。 まず一点目、「関数型言語ユーザーは業務の

    java-ja.dddの最後の「関数型言語Dis(?)」について - ( ꒪⌓꒪) ゆるよろ日記
  • [OCaml]書評「プログラミングの基礎」 - あどけない話

    僕はよく「関数プログラミングの入門書には何がいいか」という質問を受ける。そのときは必ずこの(と他のいくつか)を答えるようにしている。書評を書いたつもりになっていが、検索してみると書いてないようなので、反省して良書を紹介してみようと思う。 プログラミングの基礎 ((Computer Science Library)) 作者: 浅井健一出版社/メーカー: サイエンス社発売日: 2007/03/01メディア: 単行購入: 17人 クリック: 409回この商品を含むブログ (127件) を見る 書はプログラミングの経験のない人を対象としており、書名通りプログラミングの基礎が説明されている。使用する言語は OCaml である。著者の浅井先生は、お茶の水女子大学でプログラミングを教えている。授業の経験を元にしたにはよくあることだが、内容が実に整然としており、例題がこなれている。 初心者を対象と

    [OCaml]書評「プログラミングの基礎」 - あどけない話
  • SOE 15.3 章 The Implementation - 言語ゲーム

    いよいよ反応プログラミングの核心に入って行きます。前回までの復習。 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 を組み合わせ

    SOE 15.3 章 The Implementation - 言語ゲーム
  • Roy

    About Roy is an experimental programming language that targets JavaScript. It tries to meld JavaScript semantics with some features common in static functional languages: Damas-Hindley-Milner type inference Whitespace significant syntax Simple tagged unions Pattern matching Structural typing Monad syntax Try the current version below. The code is on GitHub. Follow @roylangjs for news on developmen

  • なぜ次に学ぶ言語は関数型であるべきか - YAMAGUCHI::weblog

    はじめに こんにちは、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

    なぜ次に学ぶ言語は関数型であるべきか - YAMAGUCHI::weblog
  • Scheme - Wikipedia

    この中でカール・ヒューイットが設計した規則ベースの言語 Planner はあまりに複雑な機構を持っていたため当初設計された全機能の実装は困難であり[注釈 9]、サスマン等はそれをサブセット言語の Micro-Planner として実現し、さらには、 Planner の流れを汲んだ独自言語として Conniver を作成した。 同じくカール・ヒューイットが設計したアクタ言語 Plasma (Planner-73) も複雑な機構を持っていたため、MacLisp による実装が存在したものの、その動作の仕組みを理解するのは困難であった。サスマン及びガイ・スティール・ジュニアは Plasma を理解するために、不要な機能を省いた LISP 構文を持つ小さな Plasma を設計した。 上記の Plasma からその小さな Plasma の設計に至る過程は Planner から Micro-Plann

    Scheme - Wikipedia
  • 「Java開発者ための関数プログラミング」が出版されました - YAMAGUCHI::weblog

    みなさま、ご無沙汰しております。1ヶ月以上ぶりのブログ更新となりました。Python界の情弱こと山口です。 この度、拙訳の「Java開発者のための関数プログラミング」という書籍がオライリー・ジャパンより電子書籍(ePub)で出版される運びとなりました。原著者はProgramming Scala(日語版「プログラミングScala」)のDean Wampler氏。 Java開発者のための関数プログラミングDean Wampler 著、山口能迪、株式会社トップスタジオ 訳 フォーマット ePub O'Reilly で詳細を見る Java開発者のための関数プログラミング - Google+ 書は、無理をしてJavaで関数プログラミングで実装してがんばろう、というではありません。一部そういうところもあるかもしれませんが、そういう方向は目指していません。あくまで関数型と呼ばれるものにはどういう概

    「Java開発者ための関数プログラミング」が出版されました - YAMAGUCHI::weblog
  • Shibu's Diary: 関数型言語を広めるためには何が必要なのか?

    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の記事です。当は

  • 絵で見るモナド · eed3si9n

    2012-08-21 John Wiegley さんの “Monads in Pictures” を翻訳しました。翻訳の公開は人より許諾済みです。翻訳の間違い等があれば遠慮なくご指摘ください。 2012年8月20日 John Wiegley 著 2012年8月21日 e.e d3si9n 訳 これはモナドのチュートリアルではないし、ここには数学用語も出てこない。稿は、既にモナドを一応使えるぐらいには習った人を対象とする。視覚化することで、何のために何をやっているかが明らかになるはずだ。 関数 モナドに対する直感を得る一つの方法として関数からモナドへの抽象化をたどるというものがある。関数が何をやっているのかを簡単な絵で表してみよう。Haskell の関数の呼び出しの構文を上に、同じ演算を視覚化したものを下に置いた: 関数はある値 a を投射 (map) して別の値 b を得る。中で何が起

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

    日記_2024.8.29 鞍馬と貴船 29日は鞍馬と貴船に行ってきました。こんな天気でバイクは無理、でも引きこもるのも嫌なので前々から行きたかった鞍馬と貴船に行くことにしました。ただ、いつ大雨が降っても全くおかしくないので天気がヤバそうなら帰ることにします。普通に日帰りできる距離ですから…

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

    日記_2024.8.29 鞍馬と貴船 29日は鞍馬と貴船に行ってきました。こんな天気でバイクは無理、でも引きこもるのも嫌なので前々から行きたかった鞍馬と貴船に行くことにしました。ただ、いつ大雨が降っても全くおかしくないので天気がヤバそうなら帰ることにします。普通に日帰りできる距離ですから…

    はてなブログ | 無料ブログを作成しよう
  • なぜ関数型言語は普及しないか - プログラミング日記

    言語を利用するための条件は以下の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 論理重視で言語設計されてるから、論理がわからないが為に業務に必要なものを誰も作らない。 結果実用から離れてしまう。そしたら趣味で使うだけになる。それを趣味でやる人なんて限られる。 悪循環ですねー 秀逸だと思ったコメント 一般に原理主義に走ると、だいたい使いにくくなる。 別に関数に限った話ではないのですが、、、良く分かる。

    何か関数型不遇だなぁと思って見たメモ - 技術をかじる猫