タグ

functionalに関するtotonのブックマーク (8)

  • 畳み込み関数の比較 (fold / accumulate / inject / reduce) - blanket log

    つーか、fold の弱点として、言語によって引数の順番がまちまちで、 正直憶えきれないってのがあるんだよな。誰か対応表とか作ってくれんもんか。 jijixi's diary - fold, map, for-each この中から一つ選ぶとしたらどれ? 確かにいろいろとややこしいのでまとめてみました。 いくつかの言語について大雑把に表にすると次のような感じ。 言語 関数 Haskell, OCaml, Scheme, Erlang foldl* f init items C++ accumulate(begin, end, init, f) Ruby*, JavaScript items.inject(init, f) Python, Perl* reduce(f, items [, init]) 言語 畳み込む二項演算 Scheme(SRFI)*, Erlang f(item, acc)

    畳み込み関数の比較 (fold / accumulate / inject / reduce) - blanket log
  • Collection & Copy - JavaScriptにおける高階プログラミング

    翻訳 原文:Higher Order Programming In Javascript著者:Sjoerd Visscherライセンス:クリエイティブ・コモンズ・ライセンス(帰属) 前提知識JavaScriptを使ったオブジェクト指向プログラミングの知識が必要となります。以下のWebreferenceの記事を読み、よく理解しておいてください。OOP in Javascript, part IOOP in Javascript, part IIDouglas Crockford最終更新2004/3/28はじめに高階プログラミングでは、値として関数を使うことができます。つまり引数として関数を別の関数へ渡すことも、関数を別の関数の返り値にすることもできるのです。この形式のプログラミングは、しばしば関数型プログラミングで使用されますが、「通常」のオブジェクト指向のプログラミングでも非常に有用です。

    toton
    toton 2009/02/07
    高階プログラミング
  • Perl - "Higher Order Perl" が無料ダウンロード可能に : 404 Blog Not Found

    2008年12月10日12:30 カテゴリ書評/画評/品評Lightweight Languages Perl - "Higher Order Perl" が無料ダウンロード可能に はてぶ経由で知ったのだけど、すごい。 Higher Order Perl Mark Jason Dominus Higher-Order Perl これ、Perl Mongesだけではなく Rubyists にも Pythonistas にも JavaScripters にも、いわゆる高階関数が使えるプログラミング言語のユーザーすべてにお勧めです。高階関数が単に面白いだけではなく、非常に役に立つこともわかります。 PDF版をダウンロードしたのですが、特にありがたいのは、テキスト、すなわちコードもコピペ可能なこと。検索と引用はのアキレス腱なので。 その一方で、600ページ近いこの大著を通読するのは、紙の方が向い

    Perl - "Higher Order Perl" が無料ダウンロード可能に : 404 Blog Not Found
  • Erlang Land

    電話会社エリクソンの研究所で作られた言語「Erlang」についてしばらく調べてみようと思います。読み方はたぶん"あーらん"で。 リアルタイム処理や誤り検出が可能で組込用途に使われていて、並行処理の記述も可能、 ML や Haskell、Clean などに代表される関数型プログラミング言語の一種である、 と、見た目なかなか盛りだくさんな感じ。さてさて。 ご意見・間違いの指摘等大歓迎。 インストール 概観1 概観2 * 変数 構文の基 データ構造 * パターンマッチ1 パターンマッチ2 パターンマッチ3 関数定義 落ち穂拾い メモ プロセス1 * プロセス2 インストール (2003/04/09) Open Source Erlang のページから、 ソースやメジャーなOS用のバイナリが手に入ります。異様にデカいので、 回線の細い方には厳しいかもしれません。Windowsの場合、 落としたイ

    toton
    toton 2008/08/18
    日本語の Erlang リソース
  • なぜ関数プログラミングは重要か

    John Hughes, Institutionen för Datavetenskap, Chalmers Tekniska Högskola, 41296 Göteborg, SWEDEN. rjmh@cs.chalmers.se この日語訳は原著者の承諾を得て山下がここに公開するものです。 この訳文についての、御指摘などは山下伸夫(nobsun .at. sampou.org)までおねがい いたします。 翻訳最終更新日 : 2011-09-17 原文 "Why Functional Programming Matters" 日語訳PostScript この論文は1984年以来何年ものあいだChalmers大学のメモとして回覧された。 1989年と1990年に幾分か改訂をしたのが[Hug89]と [Hug90]である。この版はもとのChalmer大学のメモ のnroff原稿をもとに

    toton
    toton 2008/08/16
    関数型言語 関数プログラミング モジュラプログラ ミングを支援するには、言語は良い糊を用意しなければならない。関数型プロ グラミング言語は二つの新しいタイプの糊を供給する。すなわち、高階関数と 遅延評価で
  • トランポリン版の継続渡し leaf_count_cps_t - Tociyuki::Diary

    11月16日に goto を使った強引なやりかたで、末尾再帰のループ化と継続渡しの実行をやってみたところ、コメント欄で shiro さんにトランポリンを紹介してもらいました。 ⇒ http://d.hatena.ne.jp/tociyuki/20061116/1163674424#c1163895106 shiro 『なお、ベース言語が末尾呼出し最適化を保証してくれない場合によく使う手としてトランポリンがあります。各関数を、結果を返すのではなく、その関数の継続手続きを返すように書いておきます。そして、(途中略)ひたすら返って来た継続を呼び出しつづけるドライバを書いて駆動します。 これだとベース言語のスタックを消費しません。』 随分と、あれから経った気がしますが、突然、これをやってみたくなったので試してみました。 まずは、関数コールをおこなわせるコードリファレンスをドライバに渡して、こんな風

    トランポリン版の継続渡し leaf_count_cps_t - Tociyuki::Diary
    toton
    toton 2007/05/14
    『なお、ベース言語が末尾呼出し最適化を保証してくれない場合によく使う手としてトランポリンがあります。各関数を、結果を返すのではなく、その関数の継続手続きを返すように書いておきます。そして、(途中略)ひた
  • 【レポート】ついにJavaにもクロージャ - James Gosling氏らJDK7へ導入提案 (1) Javaに来たるパラダイム変換クロージャ (MYCOMジャーナル)

    Java言語の主要アーキテクトであるGilad Bracha氏、Neal Gafter氏、James Gosling氏、Peter von der Ahé氏らは18日(米国時間)、Java言語において関数型やクロージャの導入を提案するホワイトペーパを公開した。現在、Javaには関数型やクロージャは用意されていない。同氏らの提案ではJDK7を目処にこれら機能を統合していきたいとしている。 関数型やクロージャは関数型言語やスクリプト言語には用意されていることが多い機能のひとつ。同機能をもった代表的なプログラミング言語にはPythonRubyPerlJavaScript、Common Lisp、Scheme、Smalltalk、Scala、C#などをあげることができる。もともとSmalltalkを使ってきたプログラマなどは、JavaにクロージャがないことをJavaに対する不満としてあげるこ

  • Rubyで関数プログラミング 【目次】

    このページでは、Rubyを使って、関数プログラミングを行ってみたいと思います。 Rubyは、よくいわれるように命令型言語の発展形たるオブジェクト指向型言語ですので、関数プログラミングを行うのに適した言語ではありません。しかし、全く関数プログラミングの特徴を伝えることができないわけではありません。それに必要ないくつかの機能を備えていると思います。従って、Rubyで関数プログラミングを行うことにより、関数プログラミングへのイントロダクションにしてみたいと思っています。 念の為言っておきますが、私はRubyをよく知りません。しかし、動的束縛のオブジェクト指向言語ということなので、その言語構成は、型システム以外はメジャーな多目的言語(C++,Object Pascal等)とそう変わらないと思います。というか、完全にそういう前提で話をします。 因みに、参考資料は、言語仕様に関するヘルプ、オライ

  • 1