タグ

関数型言語に関するkamatama_41のブックマーク (7)

  • OOは静的構造を、関数型は動的振る舞いをモデル化するのに有用だという話 - たなかこういちの開発ノート

    要約 関心対象について分析し理解しようとしたら、多かれ少なかれ「要素分解していく方法」を取るでしょう。「要素分解していく方法」とは構造を捉えることに関してのアプローチです。 構造を捉えるに当たって、OOは「要素分解していく方法」をよく支援します。構成要素はオブジェクト、構成要素間の関係はオブジェクトの関連、階層理解はencapsulationとして表すことができます。しかし、OOは動的振る舞いについては、implementationに“押し付けた”のみで、なんらの解法を提供していませんでした。 ところで、動的振る舞い=「手続き」と漫然と捉えていましたが、「手続き」とは万能チューリングマシンに由来する処理のモデル化でした。「手続き」以外に、チューリング完全である処理のモデルが存在しました。それがλ計算であり、関数型言語の「関数」です。 処理を「手続き」=状態の時系列的変遷と捉えている限り、モ

    OOは静的構造を、関数型は動的振る舞いをモデル化するのに有用だという話 - たなかこういちの開発ノート
  • おとうさんにもわかるYコンビネータ!(絵解き解説編) - よくわかりません

    先日YコンビネータのきしださんのYコンビネータのエントリが話題になっていました。 ずいぶん日にちが経ってしまいましたが、自分も、自分なりにYコンビネータのあたりを絵解きで整理してみたいと思います。きしださんのエントリタイトル*1に引っ掛けて、目標として、自分の父親(非プログラマ。その辺のおっさん)でも解る内容を目指します。 なぜ不動点演算子というのか、不動点だったらなぜ再帰なのか、この辺りも含めて、実感を持って納得できればいいなと思います。 きしださんのエントリのおさらい 題の前に、きしださんのエントリをおさらいしておきます。 Yコンビネータはただのオモチャじゃないんだよ 関数だけで色んな事が出来る 条件分岐をする関数ってのもある。 再帰(ループ)を作れる関数もある。←これがYコンビネータ。 数値も関数で表現できる。 つまり、関数だけで、条件分岐も、再帰(ループ)も、数値も作れちゃう!!

    おとうさんにもわかるYコンビネータ!(絵解き解説編) - よくわかりません
  • 数理科学的バグ撲滅方法論のすすめ---目次 | 日経 xTECH(クロステック)

    筆者 住井 英二郎 「プログラミング言語理論」という研究分野がある。この分野の研究者たちは,「ML」「Haskell」「Scheme」あるいは「λ計算」「π計算」(円周率計算のことではない)など,多くのプログラマにとっては聞いたこともない言語やモデルについて,日夜研究している。ただ,そのような言語は「難しい」「役に立たない」などと思われがちだ。 この連載では,こうしたプログラミング言語やソフトウエア科学の様々な研究を,できるだけ普通のプログラマやエンジニアにもわかりやすく(どちらかといえば理論よりも実用に重点をおいて)紹介していく。 更新は毎月第2水曜日(1月のみ第3水曜日)

    数理科学的バグ撲滅方法論のすすめ---目次 | 日経 xTECH(クロステック)
  • 関数プログラミングのエッセンスと考え方

    2012 3 5 Copyright© 2011 IT Planning,Inc All rights reserved. LEXIFI 2000 LexiFi DSL LexiFi Web ( ) 2006 Haskell/Microsoft F# 2002 Jane Stree Capital High-Frequency) OCaml 200 (private fund) Ruby on Rails Scala Xen Citrix Xen OCaml http://cufp.org/ Microsoft F# Web fpish.net 2011 Scala, Akka Scala, Akka, Play IntelliFactory ( ) TypeSafe ( ) yesod (Haskell) Web COBOL Haskell Lift (Scala) Web Pytho

    kamatama_41
    kamatama_41 2012/05/20
    めもめも
  • 再帰で考える - ぐるぐる~

    再帰は関数型言語を構成する重要な部品の一つです*1。 しかし、手続型言語に慣れたプログラマにとって、再帰で考えるというのは難しいものがあります。 このエントリは、そういうプログラマが再帰で考えることができるようになるために書きました。 言語としては、F# と C# を使っています (推奨は F#。C# の例は実用性が無いに等しい) が、Java プログラマでもある程度読めるでしょう。 前提条件として、これらの言語の文法は知っているものとします。 特に、C# で言う Func デリゲートを多用します。 すごい長いので、時間があるときに一気にどうぞ。 再帰以外の話もちょろちょろと出てきます。 再帰の重要性 いきなりですが、再帰はあくまで最後の手段です。 普通は再帰をカプセル化した関数を使うことになります。 通常使わないのであれば、再帰を学ぶことに意味はないのでしょうか? いいえ、それでも再帰を

    再帰で考える - ぐるぐる~
  • 『Scalaで学ぶ関数脳入門』――オブジェクト指向プログラマが“関数脳”を手に入れるコツ:晴読雨読@エンジニアライフ:エンジニアライフ

    オブジェクト指向プログラマが次に読む Scalaで学ぶ関数脳入門 テクノロジックアート(著) 長瀬嘉秀、町田修一(監修) 技術評論社 2010年11月 ISBN-10: 4774144363 ISBN-13: 978-4774144368 3339円(税込) ■関数型言語への注目が高まっている 近年、関数型言語への注目が高まっているように感じる。関数型言語自体の歴史は古く、1958年にMITのジョン・マッカーシー氏によって考案されたLISPが最初期の関数型言語だ。LISPは、FORTRANに次いで2番目に古い高級言語でもある。 いくらか私の主観を交えて言えば、プログラミング言語の主流は、長らくJavaやC#などの「オブジェクト指向言語」だった。CPUの進化の方向性が「高速化」から「並列化」へとシフトしつつある中で、プログラミング言語においても、いかに「並列処理」や「並行処理」を容易に実装

    『Scalaで学ぶ関数脳入門』――オブジェクト指向プログラマが“関数脳”を手に入れるコツ:晴読雨読@エンジニアライフ:エンジニアライフ
  • 関数型プログラミング - Wikipedia

    関数型プログラミング(かんすうがたプログラミング、英: functional programming)とは、数学的な意味での関数を主に使うプログラミングのスタイルである[1]。 functional programming は、関数プログラミング(かんすうプログラミング)などと訳されることもある[2]。 関数型プログラミング言語(英: functional programming language)とは、関数型プログラミングを推奨しているプログラミング言語である[1]。略して関数型言語(英: functional language)ともいう[1]。 概要[編集] 関数型プログラミングは、関数を主軸にしたプログラミングを行うスタイルである[1]。ここでの関数は、数学的なものを指し、引数の値が定まれば結果も定まるという参照透過性を持つものである[1]。 参照透過性とは、数学的な関数と同じように

  • 1