タグ

FunctionalLanguageに関するnitoyonのブックマーク (13)

  • Underscore.js

    Table of Contents Collections each, map, inject, detect, select, reject, all, any, include, invoke, pluck, max, min, sortBy, sortedIndex, toArray, size Arrays first, last, compact, flatten, without, uniq, intersect, zip, indexOf Functions bind, bindAll, delay, defer, wrap Objects keys, values, extend, clone, isEqual, isElement, isArray, isFunction, isUndefined Utility uniqueId, template Collection

    nitoyon
    nitoyon 2011/04/09
    JS を関数言語化するライブラリ。_ オブジェクトのみを作成。
  • ラムダ計算基礎文法最速マスター - 貳佰伍拾陸夜日記

    ラムダ計算は, 多くのプログラミング言語, とくに関数型言語の原形になっています. ラムダ計算について理解しておくことは, 多くのプログラミング言語の習得に役立つでしょう. ラムダ計算はチューリング完全で, 計算能力としてはふつうのプログラミング言語と同じです. ラムダ計算で計算を書く訓練をしておくことは, 任意の計算を関数のみを使って(他の制御構文を用いずに)書くときに役立ちます. ふつうに書いたら煩雑な処理を, 関数型言語のやり方で書くとすっきりすることが多々あり, コードを自由自在に書くためには必須の考え方と言えるでしょう. 項 ラムダ計算の式を項(term)と言います. 項は変数, 抽象, 適用のいずれかです. 変数 変数(variable)はふつう1文字で書きます. 変数には関数内の束縛変数(bound variable)か自由変数(free variable)かという区別があり

    ラムダ計算基礎文法最速マスター - 貳佰伍拾陸夜日記
    nitoyon
    nitoyon 2010/02/08
    大学で最初見たときは何がなんやらさっぱりだったが、関数型言語を少しかじったおかげで理解しやすい。が、途中からわけわからなくなった。
  • さあ、Yコンビネータ(不動点演算子)を使おう! - よくわかりません

    前回、おとうさんにもわかるYコンビネータ!(絵解き解説編) - よくわかりませんというエントリで、Yコンビネータ(不動点演算子)と再帰の絵解き解説をしました。 Yコンビネータ自身は、結局のところ再帰を産み出してくれるだけです。関数(正確にはλという単純な文字列変換ルール)だけで出来て、プログラミングに関するいろんな原理の研究を可能にするのが凄い訳です。その辺のさわりを、きしださんが解説されています。しかし、単なる再帰なら、実際のプログラミングではYコンビネータなんて使わなくても出来ます。 じゃあ、Yコンビネータとか不動点とかは、偉い学者さんとかが研究に使えばいいもので、普通のプログラマには何の意味もないモノなのでしょうか? というわけで、今回はポジティブに、Yコンビネータや不動点で出てくる考え方を、理論だけじゃなく、実際のプログラミングに応用する例を見てみましょう。 今回、プログラムの例を

    nitoyon
    nitoyon 2009/04/23
    Yコンビネータでモロモロ。未読。
  • 畳み込み関数の比較 (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
    nitoyon
    nitoyon 2008/10/17
    畳み込みを行う関数を言語ごとに比較。分かりよい。
  • 結論:結局、Javaはクロージャを使えるの? - lethevert is a programmer

    【追記 2008/7/2】とても昔のClosureについて書いた記事が注目を集めてしまったみたいですが、ぜひ、もっと後で書いた次の記事とその関連スレッドの方も確認してみてください。このときよりも、もう少し事情が分かってから書いたものなので、より正確に状況を理解できると思います。それに、私自身、この言葉にはまだ混乱しています・・・ http://d.hatena.ne.jp/lethevert/20070524/p2 - という問いに対して、そろそろ私の結論を整理しておきます。 これは、将来の自分に対する参照の便のための整理です。 前提知識 前提知識として、こちらの内容を読んで理解しておきます。 Closure (computer programming) - Wikipedia [id:lethevert:20060119:p1] [id:lethevert:20060121:p2] また

    結論:結局、Javaはクロージャを使えるの? - lethevert is a programmer
    nitoyon
    nitoyon 2008/07/06
    Javaとクロージャ。未理解。
  • 連載:C# 3.0入門 第1回 ラムダ式 − @IT

    C# 3.0とは何か? C#も順調にバージョンアップを重ね、ついに「3.0」である。連載を開始するに当たり、前置きとしてこの連載で扱うC# 3.0とは何かを簡単に紹介しておこう。 C# 3.0は、動的かつタイプセーフなオブジェクト指向プログラミング言語である。「動的」とは、実行するまで内容が確定しない要素が多いことを意味し、「タイプセーフ」とは、あらゆるデータに「型」が存在し、コンパイル時、あるいは実行時にそれが厳格にチェックされることを意味する。そして「オブジェクト指向プログラミング言語」とは、データとプログラムの入れ物である「オブジェクト」を前提とした言語であることを示す。 しかし、これらの特徴はC# 2.0から継承されたものであって、必ずしもC# 3.0固有のものではない。C# 3.0ならではの特徴とは何だろう? 筆者の個人的な印象だが、C# 3.0は言語が持つ個々の機能について技術

    nitoyon
    nitoyon 2008/05/14
    C#3.0で学ぶλ式。分かりよい。C#3.0は気持ちよくかけそうだ。
  • FC++: The Functional C++ Library

    New! FC++, the academic project, is now the basis for FC++, the public open source project. See FC++ on Sourceforge! FC++: Functional Programming in C++ Higher-Order Polymorphic Functions in the C++ Language FC++ is a library for functional programming in C++. Functional programming is a programming paradigm in which functions are treated as regular values. Thus, we can have functions that take

    nitoyon
    nitoyon 2008/04/08
    C++で関数型言語。遅延リスト、カリー化、ラムダ、モナドなどをサポートしてる模様。(関連) http://d.hatena.ne.jp/faith_and_brave/20080408/1207645024
  • はてなブログ | 無料ブログを作成しよう

    (娘5歳8ヶ月)娘の好物と年長さん1学期のお弁当記録 娘をただ微笑ましく見つめていただけなのに……(夫) こっこの最近の好物は「にんじんしりしり」と納豆を混ぜてべること。 我が家のしりしり&納豆好きといえばまず夫ですが、夫は卵入りのしりしりが好きで、こっこはにんじんとツナのしりしりが好き。わたしはどっち…

    はてなブログ | 無料ブログを作成しよう
  • Y コンビネータって何? - IT戦記

    このエントリの 親友へ。ブログを書こう。 - IT戦記 y がブログを始めたみたいなので、読んでみた。 で、最新のエントリを読んでみたら、 Y コンビネータというものについて書いてあったので、 Y Combinatorが凄すぎる! - yuji1982の日記 Y コンビネータって何ってところから、自分でもいろいろ考えてみた。 結局なんなのかさっぱり分からなかったんですが、自分が考えたことをまとめておく まず、フィボナッチ数を求める fib を定義する var fib = function(n){ return (n <= 2) ? 1 : (arguments.callee(n-1) + arguments.callee(n-2)); }; fib(10); おお! JS すげー!名前は n しか使ってねーよ! めでたし、めでたし。。。。じゃなくて! JS が素晴らし過ぎて話が終わってしま

    Y コンビネータって何? - IT戦記
    nitoyon
    nitoyon 2008/01/25
    まとめ: わからん。 / 関数型言語に対する苦手意識をなんとかしたい…
  • 人力検索 - 関数型言語(プログラミング言語Scheme, Haskellなど)を勉強しようと思っています。 関数型言語の勉強方法

    関数型言語(プログラミング言語Scheme, Haskellなど)を勉強しようと思っています。 初心者にも関数型言語のメリットや考えかたがスラスラ分かる勉強の材料を教えてください。 言語の習得よりも、関数型言語の考え方の習得に重きを置いています。 例えば - このを読め - このサイトを読め のように、入門から実用レベルまできちんと筋の通ったものをお願いします。 ちなみに 以前Schemeを勉強しましたが末尾再起辺りでなんとなくうやむやになってしまいました。 あと「計算機プログラムの構造と解釈」は僕には難しすぎでした。

    nitoyon
    nitoyon 2007/12/01
    関数型言語入門方法。3の回答がすばらしい。
  • プログラミング言語

    では余り知られていませんが、非常に優れた純粋関数型言語Concurrent Cleanの使い方、チュートリアル・言語リポートの翻訳を載せています。一応ここだけ見れば、Cleanの基は分かるようにしているつもりです。純粋関数型という最先端の言語でありながら、統合開発環境を持ち、GUI作成のライブラリも豊富な、そして、効率的なexeファイルを出力するコンパイラです。インタプリタではありません。 やはり言っておくべきなのでしょうが、ここにある内容は、基的に、明示的型宣言を行う命令型言語及びオブジェクト指向言語(具体的には、C/C++Java、C#、Pascal等)をやった人でないと分からないような内容が多いかもしれません。 ただ、Rubyの所は、Rubyだけ分かっていれば分かる内容だと思います。 個人的な意見ですが、関数型言語それ自体は命令型言語を勉強しないままでも入って行けると思

  • OCaml プログラミング入門

    OCaml のすすめ OCaml とはフランスの 情報技術系の研究機関の INRIA で開発されている関数型言語 ML (の方言) です。ML には多相型、型推論、ガーベージコレクション (GC)、 データ構造のパターンマッチング等、プログラミング言語理論の研究の 成果 (すごく最新のものと言うわけでは無いそうですが) が詰め込まれ ています。これらの目的・効用は、 コードの再利用の範囲が大きい (多相型) コードの記述量が短かくなる (型推論・データ構造のパターンマッチング) バグの入り込む余地が少なくなる (GC、関数的(副作用の少ない)プログラミング) 等です。私は OCaml を研究でのデータ処理をはじめ、作成するプログラムほとんど 全てにおいて日常的に使っているのですが、 とにかく開発効率が良いです。 コンパイル時の型チェックの厳しさには慣れないとちょっと面倒に感じる かもしれま

  • F# Wiki

  • 1