Shiro Kawai 11/20/2000初出、3/29/2002更新 Cに慣れたプログラマがSchemeのコードを見て面食らうことのひとつは、 無名の関数やローカル関数の多用だろう。 特に実行効率に敏感なプログラマにとっては「関数呼出しは高価」 という感覚が染み着いているため、 至るところに散りばめられたlambdaに眉をひそめてしまうようだ。 しかしSchemeにおいては、 コード上に関数が書いてあるからといって 実行時にスタックフレームの生成やレジスタの退避などのオーバヘッドが起こるとは限らない。 例えば関数の最後に別の関数を呼び出す末尾呼び出し(tail call) はただのjumpインストラクションに置き換え可能だ。 ここでは、Cプログラマを対象に、 lambdaで生成される関数群が実際にどのように実行され得るのかを書いてみたい。 (なお、Schemeの規格ではlambdaフォ
仙台ロジック倶楽部 ラムダ計算ABC 数学セミナー92年8月号より A. ラムダ計算とは 今から60年程前、プリンストン大学の若手論理学者A.チャーチが、関数の新しい表記法を提案しました。ラムダ記法と呼ばれるその表記法では、例えば二乗を計算する関数は λx.x^2 と表します。従来の"f(x)"という書き方は、それが関数を表すのか、関数のxにおける値を表すのかが曖昧なので、ラムダ記法では、関数fのxにおける値をfxで示し、xにおける値がf(x)となる関数fをλx.f(x)と表すのです。 "f(x)"という表記法の欠陥は、高校の数学までではほとんど表面化しませんが、大学に入ってから定義域や値域が関数の集合になるような高階関数(オペレータとか作用素とも呼びます)を扱いだすとすぐわかります。作用素などというとひどく特殊なもののようですが、関数f(x)にその導関数f'(x)を対応させる微分演算子D
沖ソフトウェア株式会社は、沖通信システム株式会社および株式会社沖インフォテックと平成22年10月1日をもって合併いたしました。新会社名は、株式会社OKIソフトウェアとなります。3社が行っております事業は新会社にて従来通り継続いたします。
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く