Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?
最近lambda式にハマってしまい何でもかんでもlambda式で書こうとしています。 「なんでもかんでもlambda式で書いてやるぜ!」というのはちょっとアレですが、lambda式は使ってみると割と便利なので、lambda式のちょっとしたメリットについて少し取り上げてみます。 そもそもlambdaとはなんぞや。 lambdaとは無名関数を表現する記法の一つです。 無名関数とは名前の通り、名前の付いて無い関数のことです。 pythonだったらa,bを引数として受け取り、その和を返す関数を def func(a, b): return a+b ・・・と、funcと名前を付けて記述しますね。 これに対し、lmabda式を使って、引数a,bを受け取りその和を返す関数を記述すると lambda a, b : a + b となります。 lambda式を知らないと「なんじゃこりゃ?」となるので(ぼくがな
lambdaを使っててどうも気になるのが、ループ(再帰)するために一時的に関数に名前をつけなければならないところだ。 一時的なローカル変数が簡単に設定できる言語ならともかく、Pythonではそれも結構面倒だ。 ところが、つらつらとネットを探していくと、妙なモノを発見。 『Yコンビネータ(Y combinator)』とか『不動点コンビネータ (fixed point combinator)』あるいは『不動点演算子』とか呼ばれるモノで、コレを使うと、どうやら関数に名前を付けなくとも再帰できるという代物らしい。 喜びいさんで見てみたが……書けはしたものの、理解するのに苦労した。 今回はその解説を、私のようにλ表記になじみの無い人でもわかるように、基本的に一般の関数式とPython式で書いてみることにした。 さらに、同じ式を2回書いて、次にドコにドコを適用させるかを色分けし、その結果も色分けして書
目的 この記事は、C++0xのlambdaを完全に解説せんとする目的を以て書かれた。サンプルコードは最小に留め、エラー処理等は省いた。この記事さえ読めば、今日からlambdaを恐れることなく使う本物のC++0xプログラマになれるだろう。 lambdaとは何ぞや lambdaである。あるものは、lambda関数、あるいは無名関数という名称を使っている。いったいlambdaとは何なのか。 lambdaは関数である。また、特に名前はない。したがって、lambda関数、無名関数と呼ぶのは、間違ってはいない。しかしここでは、単にlambdaと呼ぶことにする。 lambdaを定義しよう lambdaは関数オブジェクトである。lambdaは関数オブジェクトである。これはとても大事なので二度書いた。lambdaは関数オブジェクト以外の何物でもない。ところが不思議なことに、皆lambdaが単なる関数オブジェ
http://martinfowler.com/bliki/Closure.html 動的言語に興味がでてくると、 クロージャやブロックと呼ばれる概念に出会うと思います。 C/C++/Java/C# などクロージャを持たない言語をご使用の方は、 どういったものなのかご存知ないかもしれません。 ここでは簡単にクロージャについて説明します。 クロージャを持った素晴らしい言語を使ったことある方にとっては、 あまり面白くない話かもしれません。 クロージャは長年使用されてきました。 私が最初に出会ったのは、おそらく Smalltalk だったと思います。 Smalltalk ではブロックと呼んでいました。 Lisp ではクロージャを多用しています。 Ruby でもクロージャが提供されています――多くの rubyist がスクリプト言語に Ruby を選ぶのはこのためです。 基本的にクロージャとは、ブ
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く