タグ

Functionalに関するkimutanskのブックマーク (10)

  • 「OOは静的構造を、関数型は動的振る舞いをモデル化するのに有用だという話」を補足する話、もしくはデータフロー・プログラミングの話 - たなかこういちの開発ノート

    要約 動的振る舞いのモデル化には、単に関数型というよりも、純粋関数型の一つの適用と捉えられる「データフロー・プログラミング」としての理解が有用です。データフロー・プログラミングとは数値計算処理を関数型の概念で再構成したものです。データフロー・プログラミングの要は、「アルゴリズムのライブラリー化」、即ち「演算子のユーザー定義」だと考えます。これにより「処理の単位」を自在に拡張することができます。これにより、動的振る舞いを、計算式の拡張としてモデル化することができるようになります。(※とは云っても大きな目線でいえば、関数型のセマンティクスの内です。) ◇ 先日次の記事を投稿いたしました。 →《OOは静的構造を、関数型は動的振る舞いをモデル化するのに有用だという話 - たなかこういちの開発ノート》 上記記事に対して、「ある程度理解できてある程度おもしろかったが、何かがいまいちすっきりせず少し残念

    「OOは静的構造を、関数型は動的振る舞いをモデル化するのに有用だという話」を補足する話、もしくはデータフロー・プログラミングの話 - たなかこういちの開発ノート
    kimutansk
    kimutansk 2016/04/01
    データフローの文脈でユーザが定義するものがプロセスレベルとプロシージャ―レベルの差がありますか。最近どちらもあるので混同しやすいというのはあります。
  • https://ubiteku.oinker.me/2016/01/20/%E9%96%A2%E6%95%B0%E5%9E%8B%E3%81%A4%E3%81%BE%E3%81%BF%E9%A3%9F%E3%81%84-%E3%83%A2%E3%83%8A%E3%83%89%E3%81%8C%E9%9B%A3%E3%81%97%E3%81%84%E3%81%A8%E6%80%9D%E3%82%8F%E3%82%8C%E3%81%A6%E3%81%84%E3%82%8B/

    https://ubiteku.oinker.me/2016/01/20/%E9%96%A2%E6%95%B0%E5%9E%8B%E3%81%A4%E3%81%BE%E3%81%BF%E9%A3%9F%E3%81%84-%E3%83%A2%E3%83%8A%E3%83%89%E3%81%8C%E9%9B%A3%E3%81%97%E3%81%84%E3%81%A8%E6%80%9D%E3%82%8F%E3%82%8C%E3%81%A6%E3%81%84%E3%82%8B/
    kimutansk
    kimutansk 2016/03/06
    OOは利用側のコードは短くなるが、内部的な状態遷移の把握が困難、FPは不測の事態が起こりにくいが、全てのデータの流れを明示的に表現する必要が出て、コードは冗長になる。
  • https://ubiteku.oinker.me/2016/01/14/elixir%E8%A9%A6%E9%A3%B2%E9%8C%B2-4-%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E6%8C%87%E5%90%91%E3%81%A8%E9%96%A2%E6%95%B0%E5%9E%8B%E3%81%AE%E9%81%95%E3%81%84/

    https://ubiteku.oinker.me/2016/01/14/elixir%E8%A9%A6%E9%A3%B2%E9%8C%B2-4-%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E6%8C%87%E5%90%91%E3%81%A8%E9%96%A2%E6%95%B0%E5%9E%8B%E3%81%AE%E9%81%95%E3%81%84/
    kimutansk
    kimutansk 2016/03/06
    オブジェクト指向は可変部分をカプセル化することでコードをわかりやすくする、関数型は可変部分を絞ることでコードをわかりやすくする、と。
  • 「なぜ関数プログラミングは重要か」を要約してみた(その1) - Okapies' Archive

    関数型プログラミング (functional programming) の利点を説く際によく持ち出されるのが、QuickCheck の開発者の一人である John Hughes が 1984 年に著した論文 "Why Functional Programming Matters" だ。「なぜ関数プログラミングは重要か」という題名で日語訳もされているので、読んだことがある人も多いと思う。 要旨としては、冒頭の1章および2章で述べられている「関数型プログラミングが優れているのは、高階関数と遅延評価という、モジュール同士を貼り合わせる強力な『糊』を持っているからだ」という話がほぼ全てで、以降はそれを具体例に基づいて説明する構成になっている。ただ、その具体例として「数値計算アルゴリズム」やら「ゲーム人工知能アルゴリズム」やらの話が延々と続くし、しかもコード例が Haskell の先祖にあたる

    「なぜ関数プログラミングは重要か」を要約してみた(その1) - Okapies' Archive
    kimutansk
    kimutansk 2015/12/07
    関数プログラミング実践入門でも似たような内容がありましたが、元はこの論文でしたか。
  • 大規模分散システムの現在 -- Twitter

    ↓↓↓↓訂正あります。↓↓↓↓ 2018/07/02に株式会社エフコード社内で行われた勉強会のスライドです。 訂正版(随時更新中): https://docs.google.com/presentation/d/15HOMfAbtdWwO48njcB8IdkN3kVAMu3wsmZo0O3S-f_4/edit?usp=sharing 専門家による資料・専門家向けの資料ではありません。自分自身で学習し、論文・文献等を読解してまとめた内容となります。間違い等あるかもしれませんが、あれば是非コメント頂ければと思います。 【訂正事項】 スライド16: 誤:たった一つのプロセスが故障しただけでも有限時間で合意できない 正:たった一つのプロセスが故障しうるだけでも有限時間で合意できない スライド20: 誤: 重要: あるschedule σ1, σ2 がdisjoint (nodeが被ってない) なら

    大規模分散システムの現在 -- Twitter
    kimutansk
    kimutansk 2015/06/24
    分散システムでもありますが、関数とFutureで非同期処理の合成に関する資料でもありました。やはりいい加減このあたりをきちんと学んでおかないといけませんね。
  • 関数型言語のウソとホント - Qiita

    追記 こんな記事を読むより、まともな関数型プログラミング言語を使ってまともに関数型プログラミングを学ぶほうが、関数型プログラミングについてよほど正確な理解を得られます。少しでも関数型プログラミングに興味のある人は、まずは真面目なHaskellの教科書やすごいHを読んだり、やさしいHaskell入門を読んだりしながら、実際に関数型プログラミングのコードを書いてみることをお勧めします。 繰り返しますが、この記事はあんまり読む必要はないです。関数型プログラミングを理解するには実際に自分でコードを書いてみるのが一番です。関数型プログラミングあるいは関数型プログラミング言語を理解するもっとも確実な方法は、Haskellをあなたのマシンにインストールして何かまとまったアプリケーションを書いてみることです。Haskellでアプリケーションが書けたら、自分は関数型プログラミングを理解しているし使えると胸

    関数型言語のウソとホント - Qiita
    kimutansk
    kimutansk 2015/01/08
    一つの視点からの考えとしては面白いですが・・・長い。あとは現実的に既存のオブジェクト指向の何かを関数型で置き換えて、何が良くて何が悪かったか、とかが欲しい所ではあります。
  • 本書について[関数プログラミング実践入門 ──簡潔で、正しいコードを書くために(WEB+DB PRESS plusシリーズ)]|gihyo.jp … 技術評論社

    WEB+DB PRESS plus(ウェブディービープレスプラス)シリーズは, Webアプリケーション開発のためのプログラミング技術情報誌『WEB+DB PRESS』編集部が自信を持ってお届けするシリーズです。 「関数プログラミング」は,関数型言語プログラマのみならず,すべてのプログラマにとっても急激に身近なものになってきました。 みなさんがよく知るメジャーな命令型言語の最近のバージョンでも,関数プログラミングのエッセンスを取り入れた機能が入ってきています。すなわち,たとえ関数型言語を使わない人であっても,使っている言語の新機能をうまく取り入れて開発を続けていくためには,関数プログラミングを学ぶ必要が出てきたということでもあります。 関数プログラミングは,その名のとおり「関数」を基単位とし,関数の組み合わせでプログラムを構成します。関数プログラミングというスタイル自体は,実用的な言語であ

    kimutansk
    kimutansk 2014/11/16
    関数型の珠玉本よりこちらの方が関数型と他の言語との比較が充実していて求めていた内容ではある・・感じですかね。
  • 書籍編集局ブログ|Ohmsha

    2月15日(木)に開催された「Developers Summit 2018(デブサミ)」(主催:翔泳社)にて「ITエンジニアに読んでほしい! 技術書・ビジネス書大賞2018」のプレゼン大会と投票が行われ、大関真之先生の著書『機械学習入門 ボルツマン機械学習から深層学習まで』がみごと技術書部門の大賞の栄冠に輝きました! プレゼン大会では大関先生自ら書に関する熱い熱い思いを披露していただました。このプレゼンによって「読んでみたい!」「数式が苦手だけどこのなら読める!」と惹きつけられるオーディエンスが続出!みごと大賞に選ばれることとなりました。ブラボー! 書は、おとぎ話の白雪姫に登場するお妃様と鏡の関係をなぞらえ、その問答により「機械学習とは何か」「何ができるのか」を楽しいストーリーと可愛らしくしかも的確なイラスト、そして数式をまったく用いることなく解説している画期的な内容です。 登場する

    書籍編集局ブログ|Ohmsha
    kimutansk
    kimutansk 2014/11/06
    これは読んでみたい。オーム社、ということはDRMフリーの電子版も出ますかね。
  • ストリーム表現とその変換 - ✘╹◡╹✘

    データをストリームとして表現する方法と、ストリームを変換する方法を紹介する。 ストリームはメッセージが流れる川である Pub/Subメッセージングモデルでメッセージを流すためのオブジェクトのことをストリームと呼ぶことにする。ストリームにはメッセージをPublishでき、またメッセージを受け取ったときの処理をSubscribeできる。例えばキーボードからの入力をPublishして、内容をコンソールに出力するような処理をSubscribeできる。 kamo.jsでストリームを表現する ストリームについて説明するために、kamo.jsというストリームを表現するためのライブラリをつくった。kamo.jsは、ストリームを作成するためのkamo.Streamというコンストラクタ関数を提供する。このコンストラクタ関数から作成されたオブジェクトは、publishとsubscribeというメソッド(※プロパ

    ストリーム表現とその変換 - ✘╹◡╹✘
    kimutansk
    kimutansk 2014/08/21
    実際にこういうライブラリを作ってしまうのが説明しやすいですし、理解も深まりますか。
  • 図で分かるfoldLeft - tototoshi の日記

    foldLeft って map, filter, foreach といった他の高階関数に比べて難しい気がします。多分いきなり「畳込み」とか「アキュムレータ」とか言うからだめで、手続き脳フレンドリーな言い方は「ループの変形」なんじゃないかと思いました。実は書くだけだったら手続き的ループから機械的に変換できます。 こういう目で見ると、map, filter が foldLeft で実装しろみたいなありがちな練習問題もとても簡単ですね。 ちょっと複雑なものも一回ループで書いてしまってそれから foldLeft に変形するというズルができます。

    図で分かるfoldLeft - tototoshi の日記
    kimutansk
    kimutansk 2014/05/27
    foldLeftをこういう風にマッピングすると対応はわかりやすいですね。
  • 1