タグ

関連タグで絞り込む (0)

  • 関連タグはありません

タグの絞り込みを解除

ProgrammingとfunctionalとCSに関するTaKUMAのブックマーク (10)

  • 2010-12-26

    リアクティブプログラミングは、「時間とともに変化する値」=「振る舞い」同士の関係性を記述することでプログラミングを行うパラダイムです。 GUIなどのようにインタラクティブなシステムや、シミュレーションやアニメーションのようにダイナミックに状態が変化するようなシステムを宣言的に記述することができます。 これらの「変化する状態」や「外部とのやりとり」が支配的なシステムは、純粋関数型言語が、その強みを発揮しにくい部分でもあります。 稿では、リアクティブプログラミングが副作用を含む系を宣言的に記述することを可能にし、状態の管理という厄介な問題からプログラマを開放する可能性があることを示したいと思います。 (割と独自研究に基づく解釈ばかりなのでその点ご了承ください。あと例としてでてくるコードは、Pythonベースの擬似コードで具体的なライブラリに基づくものではありません。) Why Reactiv

    2010-12-26
  • Monad (functional programming) - Wikipedia

    In functional programming, monads are a way to structure computations as a sequence of steps, where each step not only produces a value but also some extra information about the computation, such as a potential failure, non-determinism, or side effect. More formally, a monad is a type constructor M equipped with two operations, return : <A>(a : A) -> M(A) which lifts a value into the monadic conte

    Monad (functional programming) - Wikipedia
  • ラムダ計算入門

  • 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

  • Haskell で Y コンビネータ - あどけない話

    Haskell では、Y コンビネータが作れないと誤解している人がいるので、できることを示すと同時に、これまで学んだことをまとめてみます。 遅延評価を活かした Y コンビネータ 関数名を用いた再帰を使ってよいなら、Haskell では遅延評価のおかげで、Y コンビネータを定義である Y x = x (Y x) の通りに書けます。 y :: (a -> a) -> a y x = x (y x) Y コンビネータ用の階乗を定義してみましょう。 fact :: Num a => (a -> a) -> a -> a fact = \f n -> if n == 0 then 1 else n * f (n-1) 以下のように動きます。 y fact 4 → 24 でも、この階乗は Haskell っぽくないので、入り口で分岐するように書き直してみます。 fact :: Num a => (a

    Haskell で Y コンビネータ - あどけない話
  • さあ、Yコンビネータ(不動点演算子)を使おう! - よくわかりません

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

  • Yコンビネータのまとめ - あどけない話

    不動点 関数 f :: a -> a に対して、f x == x となる x を「関数 f の不動点」という。 もし、関数 f を入力として取り、関数 f の不動点を返す関数 Y があるとすれば、関数 f の不動点を Y f と表現できる。 ここで、Y の型を調べる。引数 f の型は a -> a、Y は不動点を返すから返り値の型は a。よって、Y :: (a -> a) -> a となる。 不動点 x = Y f を f x == x に代入すると、Y f == f (Y f) となる。これを Haskell で実装すると、関数名に大文字が使えるとして、以下のようになる。 Y x = x (Y x) これを不動点コンビネータと呼ぶ。 再帰の例 再帰するときに自分の関数名を使わない階乗のプログラム fact を以下のように定義する。 fact :: Num a => (a -> a) ->

    Yコンビネータのまとめ - あどけない話
  • Y combinator の謎

    まとめ: Y combinator は、 不動点演算子 (不動点コンビネータ) と呼ばれるもののひとつである。 ある高階関数 f に Y を適用した値 Yf は、関数 f の不動点となる。 不動点演算子を使うと、名前のない関数でも自分自身を再帰的に呼び出すことができる: Y = (λf. (λx. f (x x)) (λx. f (x x))) Y の改良版 = (λf. (λx. (λp. f((x x), p))) (λx. (λp. f((x x), p)))) これ以外にも、不動点演算子として Turingコンビネータ θ が知られている: θ = (λx. (λy. y ((x x) y))) (λx. (λy. y ((x x) y))) (追記) λ-式 (lambda expression) は、さしずめ『関数のヒモノ (干物)』のようなものである。 水 (=引数) をかけ

  • 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の狭間で
  • More preview enhancements for Windows Azure AD Premium - Active Directory Blog - Site Home - TechNet Blogs

    Ever found yourself staring at the Output Window, overwhelmed by endless lines of logs and cryptic messages? You're not alone! For years, developers have relied on the Output Window for critical build and debug information. But making sense of it—and translating it into action—has...

    More preview enhancements for Windows Azure AD Premium - Active Directory Blog - Site Home - TechNet Blogs
  • 1