タグ

lambdaに関するnsyeeのブックマーク (38)

  • 8つの質問で、Lazy K業界の現状を知る - モナドとわたしとコモナド

    Lazy系の会社の隆盛があって、仕様が定められたのが8年ぐらい前だろうか。 コンビネータ産業の人材動向が、今どうなってるかって? 大方の予想より凄惨ですよ。 それが分かる方法がある。Lazy K技術者に技術力を問う8つの質問によってだ。 Lazy K業界のエンジニアの平均レベルを知りたくって、いろんな会社さんのLazy K開発者(経験者)向けに以下のようなつ8の質問をしていない。 その8つの質問というのはこんな問題だ。 Lazy K技術者に技術力を問う8の質問 ラムダ抽象ではなくコンビネータで表現するメリットを一言で表してください。(筆記回答) 入出力の終端を表現する方法は何ですか?(筆記回答) チャーチエンコーディングとスコットエンコーディングの違いを端的に説明してください。(筆記回答) 任意の関数に対して不動点を求めるコードはどれですか?(選択回答) S I I (S (S (K S)

    8つの質問で、Lazy K業界の現状を知る - モナドとわたしとコモナド
    nsyee
    nsyee 2013/03/19
    クソワロタ
  • さあ、Yコンビネータ(不動点演算子)を使おう! - よくわかりません

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

    nsyee
    nsyee 2013/02/02
  • JavaScriptのコードを美しく表示する(Vim編) | Webシステム開発/教育ソリューションのタイムインターメディア

    setlocal conceallevel=2 syntax keyword javaScriptLambda function conceal cchar=λ highlight clear Conceal highlight link Conceal Identifier highlight link javaScriptLambda Identifier

    JavaScriptのコードを美しく表示する(Vim編) | Webシステム開発/教育ソリューションのタイムインターメディア
  • GitHub - tyok/js-mask: More concise JavaScript using Vim's "conceal" feature

  • Java SE 8に導入されるのは、ほんとにクロージャ!? - Fight the Future

    Javaプログラマが悩むラムダとクロージャと匿名関数と - Fight the Future じゅくのblog http://d.hatena.ne.jp/jyukutyo/20111117/1321587651 の続き。 セットアップ ラムダ式の使えるJava SE 8のアーリービルドは、ここからダウンロードできます。 Java Platform, Standard Edition 8 Developer Preview ReleasesJava.net http://jdk8.java.net/lambda/ PATHを通せばセットアップ完了。 Java SE 8とか言いながら、ラムダ式が使える版は、 OpenJDK 7の最新版にラムダプロジェクトを足したものだそうです。 (ラムダ式が使えない版は、ちゃんとJDK8) The Lambda project has used sou

    Java SE 8に導入されるのは、ほんとにクロージャ!? - Fight the Future
  • ラムダ計算の勉強のしかた、プログラム意味論 - きしだのHatena

    先日のエントリで手続きを記述するという側面と、式を記述するという2つの側面があるということを書きました。 プログラムの理論とはなにか そして、手続きの性質として代表的な、アルゴリズムについての勉強のしかたについてまとめてみました。 アルゴリズムの勉強のしかた そこで、今回は、式を記述するという側面の勉強のしかたと、あとこの分野は自分でもまだ全然勉強してなかったので、これからどういうを読もうと思っているかをまとめてみます。 プログラム意味論 プログラムは必ずプログラム言語、少なくとも記号で記述します。*1 そこで、プログラムの勉強という点では、どのように動くかというアルゴリズムの勉強だけではなく、どのように書けるか、書いたものにどのような性質があるのかということも知る必要があります。 例えば、2005年あたりからRubyのような動的型付け言語が流行りだし、Javaなどの静的型付けの言語との

    ラムダ計算の勉強のしかた、プログラム意味論 - きしだのHatena
    nsyee
    nsyee 2011/10/09
  • JavaScriptで読む「ラムダ計算基礎文法最速マスター」 - 貳佰伍拾陸夜日記

    以前書いた「ラムダ計算基礎文法最速マスター」(以下「最速マスター」)は, 予想以上に多くの人に興味を持ってもらえたようですが, 同時に難しくてわからなかったという人も多かったようです. 反響から察するに, 構文を見慣れていない(と錯覚してしまう)ことが理解の妨げになっていたように思います. ラムダ計算の構文は, 実際には全く特殊なものではありません. このことがよくわかるように, 「最速マスター」のラムダ計算の簡約の例をすべてJavaScriptの構文で書いてみました. ......という内容になるはずでしたが, 気がついたらラムダ計算のインタプリタをJavaScriptで実装していました! 実際に動かせるものは下記URLにあります. https://tarao.github.io/LambdaJS/#js 動作確認と既知の問題 Firefox 3.6 Google Chrome 4.1

    JavaScriptで読む「ラムダ計算基礎文法最速マスター」 - 貳佰伍拾陸夜日記
  • ラムダ計算 - Wikipedia

    この記事には参考文献や外部リンクの一覧が含まれていますが、脚注による参照が不十分であるため、情報源が依然不明確です。 適切な位置に脚注を追加して、記事の信頼性向上にご協力ください。(2020年5月) ラムダ計算(ラムダけいさん、英語: lambda calculus)は、計算という行為を「関数」の定義と適用だけで表現する計算模型(数理モデル)である。ラムダ算法とも言う。 1930年代に数学者のアロンゾ・チャーチとスティーヴン・コール・クリーネによって、「計算できるとはどういうことか」を厳密に定義するために考案された。当時はまだ電子計算機は実用化されておらず、ラムダ計算は純粋に理論的な数学的体系として発展した。関数を定義する際にギリシャ文字のラムダ(λ)を使う慣習からその名がある。 ラムダ計算は、変数と関数の抽象化、および関数の適用という基的な操作のみから構成されるが、全ての計算可能関数を

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

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

    ラムダ計算基礎文法最速マスター - 貳佰伍拾陸夜日記
    nsyee
    nsyee 2011/10/03
  • 不動点コンビネータ - Wikipedia

    「Yコンビネータ」は不動点演算子について説明しているこの項目へ転送されています。カリフォルニア州の企業については「Yコンビネータ (企業)」をご覧ください。 不動点コンビネータ(ふどうてんコンビネータ、英: fixed point combinator、不動点結合子、ふどうてんけつごうし)とは、与えられた関数の不動点(のひとつ)を求める高階関数である。不動点演算子(ふどうてんえんざんし、英: fixed-point operator)、パラドキシカル結合子(英: paradoxical combinator)などとも呼ばれる。ここで関数 の不動点とは、 を満たすような のことをいう。 すなわち高階関数 が不動点コンビネータであるとは、 任意の関数 に対し、 とすると, が成立する 事を指す。 あるいは全く同じことだが、不動点コンビネータの定義は、任意の関数 に対し、 が成立する事であるとも

  • 技術者/プログラマのためのラムダ計算、論理、圏 第3回に行ってきた

    実は第2回にも行っていたんだけど内容をまったく咀嚼できず、そのうちやろうと思っているうちに第3回が開催されてしまった ^^; 第2回 ラムダ計算と停止性問題 第2回は、主にラムダ計算について。前回の復習からはじまって、回路図のような絵を交えながらラムダ抽象化につなげていき、最後はJavaScriptのようなCのような疑似コードを使って、チューリングマシンの停止性問題を背理法で証明して終わった(と思う)。詳しくは、檜山さんのBlogに書いてあるので、そちらを見た方が良いと思う。 セミナー資料 紙芝居:ラムダ抽象 セミナー非参加者にもわかるリアルワールド向けラムダ計算 なぜ停止性について話したのか? 第3回 自然演繹と型付きラムダ計算、カリー/ハワード対応 第3回は、カリー・ハワード対応についての感覚的な理解がゴール。第2回とはうってかわって論理を中心に話をすすめていき、論理でやっていることが

  • Mac Warner – A 23-year veteran of the U.S. Army and currently West Virginia’s Secretary of State, Mac Warner is the battle-tested leader READY to fight for you.

    Mac Warner – A 23-year veteran of the U.S. Army and currently West Virginia’s Secretary of State, Mac Warner is the battle-tested leader READY to fight for you.
  • JDK7およびJDK8のリリース計画 | エンタープライズ | マイコミジャーナル

    Java Programming Language Javaプラットフォームグループでチーフアーキテクトを務めるOracleのMark Reinhold氏がRe-thinking JDK 7 - Mark Reinhold’s Blogにおいて、JDK7およびJDK8の新しいリリース計画案を発表した。Sun MicrosystemsがOracleに買収される以前の計画では、JDK7は2009年後期にリリースされる予定になっていたが、ご覧のとおりこの計画通りには進まなかった。JDK6がリリースされて以来、Javaは開発段階にあり次のメジャーバージョンをリリースできないでいる。 こうした状況を受け、Mark Reinhold氏は次の2つのプランを提案。 プランA: 現行のJDK7案をそのまま進める。2012年中期でのリリースが見込まれる。 プランB: 現行のJDK7案からまだ開発に時間が必要と

  • javascript - λ表記をDSLに : 404 Blog Not Found

    2010年10月02日05:00 カテゴリMathLightweight Languages javascript - λ表記をDSLに 計算論 計算可能性とラムダ計算 高橋正子 クロージャーがある言語には、λ演算がすでに含まれています。 が、たいていの場合、その言語の流儀で書かねばなりません。たとえばこんな風に。 var Z = function(f) { return (function(g) { return function(m) { return f(g(g))(m); }; })(function(g) { return function(m) { return f(g(g))(m); }; }) }; ふつーに Z := λf. (λx. f (λy. x x y)) (λx. f (λy. x x y)) と書けたらよいと思いませんか? λscript(笑) できるようにし

    javascript - λ表記をDSLに : 404 Blog Not Found
  • Practical Scheme

    Shiro Kawai 7/3/2000初出、3/29/2002更新 まあとりあえずカッコは我慢しよう。ラムダとやらも、関数ポインタ+環境データ ということで納得しよう。しかし、Schemeのループ構文(do)は許せないなあ。 ごちゃごちゃしてるし、途中で脱出できないし。 CやPerlのforやwhileの方がずっと使いやすいね。 え? doなんて使わない? じゃあどうやってループを書くんだ? 消えるループ 簡単だけど、よくありそうな例として、こんなのを考えてみよう。 入力テキストの行数を数える関数count_linesを書きたい。 Cで書くとすれば、こんな感じだ。 /* 例1 */ int count_lines(void) { int count = 0, c; for (c=getchar(); c!=EOF; c=getchar()) { if (c == '\n') count+

    Practical Scheme
  • Practical Scheme

    Shiro Kawai 11/20/2000初出、3/29/2002更新 Cに慣れたプログラマがSchemeのコードを見て面らうことのひとつは、 無名の関数やローカル関数の多用だろう。 特に実行効率に敏感なプログラマにとっては「関数呼出しは高価」 という感覚が染み着いているため、 至るところに散りばめられたlambdaに眉をひそめてしまうようだ。 しかしSchemeにおいては、 コード上に関数が書いてあるからといって 実行時にスタックフレームの生成やレジスタの退避などのオーバヘッドが起こるとは限らない。 例えば関数の最後に別の関数を呼び出す末尾呼び出し(tail call) はただのjumpインストラクションに置き換え可能だ。 ここでは、Cプログラマを対象に、 lambdaで生成される関数群が実際にどのように実行され得るのかを書いてみたい。 (なお、Schemeの規格ではlambdaフォ

    Practical Scheme
  • Client Challenge

  • ホワット・ア・ワンダフル・ワールド マクロ

    Lisp みたいに,最初から高級な言語を使うと,むしろマクロの位置付けがわかりにくいのではないかと思った.もっと原始的な言語を使った方が,その恩恵はわかりやすいと思う. マクロというのは,略記法のことであり,それ以上でもそれ以下でもない. コードのまとまりに名前を付けておいて,ひとつメタな立ち位置からコードを生成する. 計算能力自体は増えない.ただ,人間が書きやすく,読みやすくなる,それだけ. 例えばラムダ計算の世界には,数という概念は存在しない. 「3」 という記述によって表現される概念は,λf . λx . f (f (f x)). のようにラムダ項にエンコードされて表現される. ソースコード上に 3 という記述を見かけたら,λf . λx . f (f (f x)). に置き換えますよ,という約束事を,マクロによって定めておけば,人間にとってわかりやすい.もちろん対応させるだけだから