タグ

ラムダに関するtaka222のブックマーク (6)

  • ラムダ計算基礎文法最速マスター - 貳佰伍拾陸夜日記

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

    ラムダ計算基礎文法最速マスター - 貳佰伍拾陸夜日記
  • lambda式

    lambda(ラムダ)式は,(名前のない)関数を記述するものである. たとえば,ある数に1を加える関数は,lambda式を使って, (lambda (x) (+ x 1)) と定義できる.lambda式を演算子として引数を与えれば > ((lambda (x) (+ x 1)) 0) 1 のように,関数の値を計算できる. これは,通常の関数の呼出しと全く同様である. また(名前をもった)新しい関数の定義は,通常defineを用いて, > (define (succ x) (+ x 1)) などとするが,実はこれは > (define succ (lambda (x) (+ x 1))) のように,lambda式によって記述される関数にdefineで名前を定義することの便 宜上の省略形式である.なお,一般にこのような便宜的な記法のことをsyntax sugar(文法上の砂糖)という. la

  • プログラミング言語論教材

    ラムダ計算(lambda calculus)は、関数の定義と実行を抽象化した体系で、意味論や型理論など、コンピュータサイエンスのいろいろなところで使われる。 11.2.1 定義 ラムダ計算の項(λ式)は次のように定義される。 任意の変数(小文字のアルファベットで表す)は項である。 M, Nが項ならば、関数適用(MN)は項である。 Mが項ならば、関数抽象(λx.M)は項である。 11.2.2 α変換 束縛変数の名前を付け変えることをα変換と呼ぶ。 λx.M→λy.{y/x}M  ただしy∈free(M)でない 束縛変数の名前は質的ではない。 11.2.3 β変換 関数の「実行」に相当する。 (λx.M)N→{N/x}M  ただし、Nの自由変数がMで束縛されることがない (λx.M)Nの形の部分項をリデックスと呼ぶ。 11.2.4 簡約 ある項から出発したα変換とβ変換の列を、その項の簡約と

  • C++ lambda すーぱーぷろぐらみんてくにーーく!

    The Super Programming Technique §1.ラムダ式をC++で実現する【前編】 関数型言語の基的な概念であるラムダ式を、C++で実現する方法について紹介します。 ・高階関数(higher-order function) 他の関数を引数として扱う関数は、高階関数と呼ばれます。 「関数を引数にとる」のですが、関数を渡すためには、C++では、関数ポインタで渡すか、templateで渡すかです。(operator ( )をオーバーロードしたクラスをfunctorと呼び、これを引数templateを用いて渡すテクニックについては⇒集中講義4. 超高速描画の謎【後編】を参照のこと。) グラフィックの転送ルーチン等は、処理の99%が同じで、ピクセルをコピーする関数のみが違うという場合があります。このように、共通の処理がある場合、この高階関数にすると処理がすっきり書けます。

  • 404 Blog Not Found:TuringとChurchの狭間で

    2006年04月16日13:53 カテゴリMath書評/画評/品評 TuringとChurchの狭間で The Emperor's New Mind Roger Penrose [邦訳:皇帝の新しい心] なんでひげぽんが反復がすぐにわからなかったかを憶測すると、「変数とは代入すべきもの」、という手続き型言語の呪縛が思い立つ。ひげぽんは別にがっかりする必要はない。hyukiさんさえそれに引っかかっていたんだから。 その証拠を、以下にお見せする。 [結]2005年8月 - www.textfile.org sub fix { my $G = shift; return $G->( sub { my $x = shift; return fix($G)->($x); } ); } これはPerlで実装した不動点関数で、全く問題なく動く。しかし、hyukiさんも知らぬ間に一つ「反則」を犯しているこ

    404 Blog Not Found:TuringとChurchの狭間で
  • Y Combinator - LoveRubyNet

    $Id: ycombinator.html,v 1.6 2002/06/27 23:37:39 aamine Exp $ [ruby-list:35058] に刺激を受けて Y combinator を解読してみた。 こんなもん読むくらいなら以下の参考ページを読んだほうがいい。 参考にした (というかほとんどそのままな) ページ (英語) http://www.ececs.uc.edu/~franco/C511/html/Scheme/ycomb.html 動機 再帰関数は再帰するときに自分自身を名前で呼ぶのが普通である。 これをなんとかして名前を使わず、関数そのものを呼ぶように させたい。 求めかた まず単純な fact (階乗) を以下に示す。言語は Scheme である。 (define fact (lambda (n) (if (zero? n) 1 (* n (fact (- n

  • 1