サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
ノーベル賞
sky.zero.ad.jp/~zaa54437
目次へ 最終更新 : 2003/7/21 第4章 型の力 4.1 型クラス 4.2 存在型 4.3 一意型 4.4 演習 訳者注:一意性の多相性(4.3.7)の所で、記号が正しく印字されない場合(Adobe Acrobat Reader 5.05で閲覧)がありましたので、私なりに補充しました(一応確認しました)。従って、そこに関しては正確でないかもしれないのでご了承下さい。 CLEANは、強く型付けされた言語である。これは、言語内のあらゆる式が型付けされており、プログラム実行前にコンパイラが型の正当性を検査できるということを意味している。間違って型付けされたプログラムは認められない。この型システムのおかげで、多くのエラーをコンパイル時に発見し報告することができる。ソフトウェア開発プロセスの早期の段階でプログラミングエラーを発見することは重要である。後でエラーを直すことは、遥
この頁では、関数プログラミングと並行(並列)処理との適合性について説明したいと思います。 関数型言語にとっては、並行処理は概念的には極めて親和性の高い処理形式です。 なぜか?ということに対する答えは関数プログラミング言語の本質的側面に関係しています。Part 5で、純粋な関数プログラミング言語では参照透明性が維持されているということを述べました。参照透明性が維持されていることは、プログラムの評価順序に関数の結果値が依存しないということです。ということは、任意のタスク(関数型言語では、関数となります)を1つのプロセスに割り当てることができるようになります。任意に割当ててもプログラマが管理しようとも同じことになるからです(概念的には)。命令型言語の場合、関数/手続は参照透明ではないので、任意の仕事をプロセスに割り当てることができません。任意に割り当ててしまったのでは、予測不能な動作をする恐
Written by Rinus Plasmeijer and Marco Van Eekelen. Translated into Japanese by Satoshi Ikeda. 序文 導入 Cleanに関する更なる情報 この言語報告について Cleanの構文に付いてのいくつかの注意 本報告で使用される記法上の規約 Cleanの取得法 Cleanシステムの現在の状態 Clean 1.3とClean 2.0の間の構文上の相違 著作権、著作者及び権利 最後の注意 第1章 基礎の意味論 1.1 グラフ書換え 1.1.1 小さな例 1.2 大域グラフ 第2章 モジュールと通用範囲 2.1 識別子、通用範囲及び名前空間 2.1.1 識別子の名前規約 2.1.2 通用範囲と名前空間 2.1.3 通用範囲の入れ子 2.2 Cleanプログラムのモジュ
前頁では、関数がファーストクラスであることの説明と、そのことによる実益を説明しましたが、プログラミングの世界では、引数に関数を渡すことができ、結果値に関数を返すことができる関数を高階関数(higher-order function)といいます。この高階関数の表現力の高さ故に関数がファーストクラスである必要があるといってよいと思います。 前頁ではその例を少しだけ示しましたが、高階関数の本領を知るにはいくらなんでも例が少なすぎると思いましたので、この頁では、高階関数として有用であることが知られているいくつかの関数を示すことによって、高階関数実現による利点を敷衍したいと思います。 まず、map関数です。この関数は、引数として、1つの関数と複数のリストを取り、そのリストの各要素に対して引数としての関数を適用し、その結果をリストとして出力するという関数です。Rubyにも、ライブラリとして、map
sky.zero.ad.jp/~zaf13638
関数プログラミングに関するリンク集です。Concurrent Clean公式サイト等は、それ専用のページを作っていますので、こちらを参考にして下さい。また、Clean以外の関数型言語のリンク集も作りましたので、興味がある人は参考にして下さい。 C++用の準標準ライブラリです。この中に、関数プログラミングができるようになるライブラリも多数含まれています。C++の標準化委員会でも一部取り入れているようですので、C++のユーザーは、使ってみて損はないと思います。ただ、関数プログラミングの特長を一部実現できているだけですので、その点には留意してください。尚、日本語リソースがあります。(2002.12.05記載、2003.10.17修正) NEC Research Instituteの研究員がはじめた、計算機科学の様々な文献をPostScript又はPDF等でまとめてあるサイトです。単に文献が豊富
このページでは、Rubyを使って、関数プログラミングを行ってみたいと思います。 Rubyは、よくいわれるように命令型言語の発展形たるオブジェクト指向型言語ですので、関数プログラミングを行うのに適した言語ではありません。しかし、全く関数プログラミングの特徴を伝えることができないわけではありません。それに必要ないくつかの機能を備えていると思います。従って、Rubyで関数プログラミングを行うことにより、関数プログラミングへのイントロダクションにしてみたいと思っています。 念の為言っておきますが、私はRubyをよく知りません。しかし、動的束縛のオブジェクト指向言語ということなので、その言語構成は、型システム以外はメジャーな多目的言語(C++,Object Pascal等)とそう変わらないと思います。というか、完全にそういう前提で話をします。 因みに、参考資料は、言語仕様に関するヘルプ、オライ
関数プログラミングの特徴とは何かという問題は、現在でもまだ定まっているとは言い難いような感じですので、ズバリ述べることはできませんが、それでも、命令型言語と比較した場合の関数型言語の特徴を挙げれば、それに対する大体の回答にはなると思います。 というか、正直に言って、それに関しては、Programming Language Conceptsの頁で説明していますので、そちらを参考にしてもらえれば良いということになってしまいます(例えば、その頁のimperative paradigmやfunctional paradigm等)。 しかし、それにもかかわらずこの頁を設けた理由は、Rubyは関数プログラミング言語ではないので、主要なものを全て説明できるわけではなく、それならば、その特徴の中でも、Rubyでもなんとか実現できそうなものを示そうと思ったからです。 そうしてみると、以下のものを列挙で
First Uploaded : March 20, 2002 Last Updated : March 14, 2004
目次へ 最終更新 : 2002/11/10 第5章 パーサコンビネータ 5.1 パーサの型 5.2 初歩的なパーサ 5.3 文法 5.4 パーサコンビネータ 5.5 パーサ変換子 5.6 括弧の照合 5.7 より多くのパーサコンビネータ 5.8 オプションの解析 5.9 算術式 5.10 一般化式 5.11 モナドパーサ 5.12 文脈依存性 5.13 よくある罠 5.14 エラー処理 5.15 自己適用 5.16 演習 本章は、パーサコンビネータ(parser combinator)を使用して遅延関数型言語のパーサ(構文解析子)を記述する公式的ではない紹介である。コンビネータ(結合子、組合せ子)は、解析関数(parse function)を操作する演算子である。これらのコンビネータを使用すると、エレガントな方法で、曖昧な文法(ambiguous gr
sky.zero.ad.jp
sky.zero.ad.jp/~zad18263
関数型言語にとって、関数がファーストクラスの身分を持つというのは必須の要件だと言えるでしょう。 関数がファーストクラスであるというのはどういうことかということに関しては、基礎概念の所(first-class objectの項目)にもあるので見てもらえればいいと思いますが、ここでも簡単に言っておくと、データと同じように関数を取り扱うことができるということです。つまり、名前をつけられる(定義/宣言できる)ということだけではなく、関数の引数・結果値になることもでき、しかも、データ構造の中にオブジェクトとして組み込むこともできるということです。 関数型以外の言語はこれができるわけではありません。つまり、データと同じように、定義できたり、引数・結果値になったり、データ構造に組み込むことができるわけではありません。例えば、Rubyでは、メソッド定義はdefを使用する一方で、変数定義は代入演算子に拠
sky.zero.ad.jp/~zac78258
sky.zero.ad.jp/~zaj25480
奥多摩の町 古里の郷に ふるい ふるい 一軒の茅葺民家がございます この地に建てられ はや二百と有余年 幾代もの暮らしを じっと見守って来た この屋敷の中で 心をこめて お蕎麦をお出ししたいと考えております 竹林を渡る風 鳥の声 山の幸 川の恵み 四季の自然を愛でながら 丹三郎の味をお楽しみください
日本では余り知られていませんが、非常に優れた純粋関数型言語Concurrent Cleanの使い方、チュートリアル・言語リポートの翻訳を載せています。一応ここだけ見れば、Cleanの基本は分かるようにしているつもりです。純粋関数型という最先端の言語でありながら、統合開発環境を持ち、GUI作成のライブラリも豊富な、そして、効率的なexeファイルを出力するコンパイラです。インタプリタではありません。 やはり言っておくべきなのでしょうが、ここにある内容は、基本的に、明示的型宣言を行う命令型言語及びオブジェクト指向言語(具体的には、C/C++、Java、C#、Pascal等)をやった人でないと分からないような内容が多いかもしれません。 ただ、Rubyの所は、Rubyだけ分かっていれば分かる内容だと思います。 個人的な意見ですが、関数型言語それ自体は命令型言語を勉強しないままでも入って行けると思
更新履歴過去分等 2006/11/28 : Links modified (Linkを修正しました。) 2005/07/16 : Link added in Clean site (Linkを追加しました) 2005/06/04 : "How to use Clean IDE" updated (Clean IDEの使い方を更新しました) 2004/12/03 : Functional programming in Ruby modified (Rubyで関数プログラミングを一部修正しました) 11/26 : Programming language concept added (プログラミング言語の基礎概念を一部追加しました) 2004/11/02 : Clean related sites linked (Clean関連サイトのリンクを追加しました) 09/21 : Object I
純粋遅延関数型言語Concurrent Clean (Pure and lazy functional language : Concurrent Clean) 〜 The most functional language 〜 Concurrent Cleanは、オランダのネイメーヘン大学で開発している、純粋な関数型言語です。 メジャーな関数型言語としては、Lisp、Scheme、ML、Haskell等がありますが、それらに決して劣ることのない環境と言語仕様を持つ言語です。効率性・開発環境・言語仕様どれも最高位ではないかと思うくらいです。言語仕様的には、この中では、Haskellに一番似ているとされています(沿革的にはMirandaと言われる純粋関数型言語の中間言語から出発していますので、Mirandaに似ていると言う方が正確でしょうが)。 ここでは、著作者たるPlasmeijer教授
上のページへ Cleanで関数プログラミング 【総目次】 Written by Pieter Koopman, Rinus Plasmeijer, Marko Van Eekelen and Sjaak Smetsers. Translated into Japanese by Satoshi Ikeda. 序章 第一部 第二部 第三部 付録 この文書は、原題"Functional Programming in Clean"を、原著作者の許諾を得て、池田 聡が翻訳したものです。 本文書のレイアウトは、Internet Explorer 5.5SP2 & 6.0SP1に最適化されていますので、他のブラウザでは正しく表示されない場合があります。 尚、文字コードは、Shift_JISです。
Abstract interpretation 抽象解釈と訳されているようである。抽象実行とも訳されることがある。 定義としては、プログラムを全部計算することなく、そのプログラムの意味又は特性を画定することを目的とした部分実行ということになると思う。部分実行であるので、プログラムを全部実行してしまうわけではない。 これは、通常のプログラムの実行と比べると分かりやすい。通常のプログラム実行(通常のインタプリタ等の実行のこと)は、標準解釈(standard interpretation)と呼ばれるが、これとの対比で考えると、抽象解釈とは、コンパイル時に行われ、停止性を持つ、性質の調査には近似的であり、部分的なプログラムの実行であるということができる。それに対して、標準解釈は、実行時に行われ、必ずしも停止するわけではなく、しかし、特性の画定は決定的であり、全部を行うプログラムの実行ということ
このムービーはあくまでも ネタ です。 BGMは Cranky 様の 「party 4u ''holy nite mix」 をお借りしております。感謝です。 よくあるゲームレビューをフラッシュ化(バカフラ) 内容はキターーでヨワーーでキモーーな叫びですが、ついでに動作がオモーーです(ファイルサイズも)。 予想外に広まったなぁ。このフラ。 ちなみに「スペランカーはクソゲーではない!」と憤りの方もおられるようですが、大多数の人はクソゲーの認識なのでそちらに合わせております。少数派まで全てに合わせるのは不可能ですので。
このページを最初にブックマークしてみませんか?
『sky.zero.ad.jp』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く