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

  • ArrowのloopとYコンビネーター - takkan_mのNo planな日常

    言語ゲーム - ArrowLoopで、ArrowのloopでYコンビネーターができるというので、ちょっと試してみた。 Arrowのloopは以前、MaDさんの記事でなんとなく、理解をしていたつもりだったんだけど、実際に自分で書いてみると全然わかっていない、Haskell(主に、if式とlet式)理解していないことをあらためて感じた。 僕の中で、Yコンビネーターといえば、階乗計算なので、階乗計算を書いてみる。 まずは、id:propellaさんのcountdownを真似てみる。 fact (a,f) = ( f a , fc) where fc 1 = 1 fc x = x * f (x-1) loop fact 10 fcという名前がなんとなく、嫌なのでfcを無名関数で記述。 fac (x,f) = (f x, (\y -> if y == 1 then 1 else y*(f (y -1

    ArrowのloopとYコンビネーター - takkan_mのNo planな日常
  • ArrowLoop - 言語ゲーム

    さて、気分を変えて ArrowLoop をやります。論文に書いてある loop f b = let (c,d) = f (b,d) in c の意味が全く分からなくて Arrow の勉強が一ヶ月近く停滞していたのですが、id:MaD さんが素晴らしい解説 http://d.hatena.ne.jp/MaD/20070818 を書かれているので自分なりに写経します。loop を使って普通のループを作るには、引数として関数を一つ与えます。関数の型は (b,d) -> (c,d) のような入出力ともタプルとします。よくある図で示すと、タプルの後ろの引数がくるりと入力に繋がれる形をしています。 import Control.Arrow nonsense (b, d) = (b + 1, d * 2) -- *Main> loop nonsense 1 -- 2 -- このしようも無い例では、b +

    ArrowLoop - 言語ゲーム
  • Structural C++ - d.y.d.

    19:05 08/05/31 私が一番好きなSFと言えば『百万年の船』ですが、 昨日読んで『タウ・ゼロ』が二番目に好きなSFに なりました。最近の感想が大袈裟です。このどうしようもなく取り返しのつかない方向に お話が突っ走っていくっぷりが楽しい。あと、私が感情移入する気になれる主人公ってそうそういない。 いやそれはともかく、 まだこの二冊しか読んだことないのですけど、どうも自分はポール・アンダースンを読み漁るべきっぽいな。 UTPC UTPC というのに参加してました。 みんな解いてるから解けるはず!と思って挑み続けた E が結局解けずじまいでした。 うわーん。K かせめて H に時間使うべきだった。しかし若者勢とロートル勢のバランスが絶妙だ。 → 提出物一式。 13:58 08/05/29 ICFPの ICFP Programming Contest のページが更新されてました。

    ytb
    ytb 2008/05/15
    "証明駆動開発 (Proof Driven Development)" という考え方
  • ときどきの雑記帖

    ■_ 東横線。 田園都市線もその傾向があるらしい(東横線よりもひどい?)のですが、 朝のラッシュの時間帯だと、数分の遅延が定常的に発生しているような気がします。 51分発の電車が53分に入線してくるとか。 原因がどうとかどうしろとかいうつもりは今のところないのですが 遅延など東急各線の運行情報をメール配信するサービス (東急の公式発表→ http://www.tokyu.co.jp/contents_index/guide/pdf/080519.pdf ) こういうことをするということは、 やっぱりそういう情報を流さなければならない機会が多いってことなんでしょうかねえ。 利用は無料ということなのでとりあえず申し込んでみよう。 と思ったら、どうも15分以上の遅延(とその見込み)についてメール配信があるということと (数分でも 遅延があったら知りたいんだがなあ。特に朝の数分は貴重だからw)、

    ytb
    ytb 2008/05/15
    証明支援系@2ch
  • Practical Scheme

    Shiro Kawai まだ下書き Schemeの特徴をあげるときに、「継続」や「call/cc」が出て来ないことはない。 でも、R5RSのcall/ccの項をいくら読んでも、どうもよくわからない。 call/ccを使えばC言語のbreakみたいなのとか、コルーチンとかいう スレッドもどきとかが書ける、というのはわかったけど、一体そういうのが書けて 何が嬉しいのか、そこんとこがピンと来ないんだ。 今、そこにある継続 プログラミングの世界の概念には、禅の公案のようなものがある。 それを説明する文章はほんの一文なのに、最初に目にする時、 その文は全く意味をなさない、暗号のように感じられる。 だがひとたびその概念を理解すると、 その概念の説明は確かにその一文で説明されているのがわかるのだ。 そんな、「分かれば分かる」という禅問答の中でも 「継続」は最も謎めいたものの一つと言えるだろう。 文献を紐

    Practical Scheme
    ytb
    ytb 2008/04/20
  • なぜ関数プログラミングは重要か

    John Hughes, Institutionen för Datavetenskap, Chalmers Tekniska Högskola, 41296 Göteborg, SWEDEN. rjmh@cs.chalmers.se この日語訳は原著者の承諾を得て山下がここに公開するものです。 この訳文についての、御指摘などは山下伸夫(nobsun .at. sampou.org)までおねがい いたします。 翻訳最終更新日 : 2011-09-17 原文 "Why Functional Programming Matters" 日語訳PostScript この論文は1984年以来何年ものあいだChalmers大学のメモとして回覧された。 1989年と1990年に幾分か改訂をしたのが[Hug89]と [Hug90]である。この版はもとのChalmer大学のメモ のnroff原稿をもとに

  • Programming in Haskell

    Programming in Haskell ページへようこそ このサイトについて このサイトは、Haskell でプログラミングを楽しむためのサイトです。 現在のところ、WiLiKi というWiKiシステムで運用されています。WiLiKiの使い方は、 WiLiKi:WiLiKi:リファレンスマニュアルを参照してください。 メイリングリスト 「Haskellプログラミングを楽しむための」メーリングリストがあります. MailingListのページをご覧ください. チャット 「Haskellプログラミングを楽しむための」チャット・ルームがいくつか存在します. ChatRoomのページをご覧ください. サイトマップ Introduction Haskell とは Definition 仕様と標準ライブラリ Tutorial チュートリアル やさしいHaskell入門 モナドのすべて なぜ関数プ

  • Two Dozen Short Lessons in Haskell

    Two Dozen Short Lessons in Haskell - Q Pages and A Pages (WinZip - 0.9 megabytes) A PDF version of Two Dozen Short Lessons in Haskell is contained in a file named twoDznQ.pdf. The reverse sides of some pages, which reveal the information intentionally omitted from the front sides, are contained in the file twoDznA.pdf. Both files are contained in twoDzn.zip, which may be accessed through the follo

  • Haskell - Wikibooks, open books for an open world

    Haskell is a featured book on Wikibooks because it contains substantial content, it is well-formatted, and the Wikibooks community has decided to feature it on the main page or in other places. Please continue to improve it and thanks for the great work so far! You can edit its advertisement template. Haskell is a functional programming language. It is distinct in a few ways: Haskell is pure. A fu

  • モナドのすべて Haskell におけるモナドプログラミングの理論と実践に関する包括的ガイド

    モナドのすべて Haskell におけるモナドプログラミングの理論と実践に関する包括的ガイド Version 1.1.0 このチュートリアルは、モナドの概念とその関数プログラミングにおける応用に ついて、初中級の Haskell プログラマにわかりやすく、利用価値があるような 解説をすることを旨としています。読者は Haskell になれていることを前提と しますが、モナドに関する経験は要求していません。このチュートリアルは、多 くの題材をカバーしています。後半のセクションでは、前半の題材をよく理解し ていることを前提とします。順をおって、モナドプログラミングを例示するため のサンプルコードがたくさん用意されています。一読で、すべての題材を吸収し ようというのはお勧めできません。 このチュートリアルは 3 つの部分で構成されています。最初の部分は、 関数プログラミングにおけるモナドの基

  • [λ]ラムダ計算インタプリタβ

  • 1