タグ

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

  • Real World Haskell―実戦で学ぶ関数型言語プログラミング: ホットコーナー

    ブログ(iiyu.asablo.jpの検索) ホットコーナー内の検索 でもASAHIネット(asahi-net.or.jp)全体の検索です。 検索したい言葉のあとに、空白で区切ってki4s-nkmrを入れるといいかも。 例 中村(show) ki4s-nkmr ウェブ全体の検索 ASAHIネット(http://www.asahi-net.or.jp )のjouwa/salonからホットコーナー(http://www.asahi-net.or.jp/~ki4s-nkmr/ )に転載したものから。 --- http://iiyu.asablo.jp/blog/2009/02/13/4115774 プログラミング言語 で、名前を出し、 http://iiyu.asablo.jp/blog/2009/06/16/4368021 やっと出たClojureScalaScalaのウェブフレーム

  • 関数型言語haXe - にわとり小屋でのプログラミング

    最近、ocaml-nagoya勉強会でhaXeコンパイラのソースコードを読んでいるので、haXeのプログラムを書きたくなってきた。 ということで、ここにいろいろ書いてみます。いろいろ指摘いただけると助かります。 http://ocaml-nagoya.g.hatena.ne.jp/yoshihiro503/

    関数型言語haXe - にわとり小屋でのプログラミング
  • web-dev - ocaml-nagoya

    Ocsigen † OCamlによる継続ベースWeb開発フレームワーク [#ud483357] 今井さんが試しています。 論文 Typing web interaction with Objective Caml 特徴 継続ベースWebプログラミング XHTMLの静的チェック セッションの自動管理 モジュール指向 HTTPサーバの実装には協調スレッドを利用。 カウンタはこう書けます。 let compt = let next = let c = ref 0 in (fun () -> c := !c + 1; !c) in register_new_service ~url:["compt"] ~get_params:unit (fun _ () () -> return (html (head (title (pcdata "counter")) []) (body [p [pcda

  • はてなブログ | 無料ブログを作成しよう

    オーベルジーヌ実レポ べ物の鼻塩塩(未だに通じるのかな) オーベルジーヌというカレーをご存知だろうか 都内にあるデリバリー専門のカレー屋で、 ロケ弁などで大人気の格欧風カレーが楽しめるらしい いいな〜 いいな〜オブザイヤー 都内の奴らはこんな良いモンってんのか 許せねえよ………

    はてなブログ | 無料ブログを作成しよう
  • 関数型言語って何がすごいんですか - Gemmaの日記

    C使いの人に、 関数型言語って何がすごいんですか と聞かれて、 じゃあC言語で accumulator すなわち、数nをとり、「数iを取ってnをiだけ増加させ、その増加した値を返す関数」を返すような関数を書いてみろよ って言ったら、 値を返す関数を返すような関数・・・? オンドゥルルラギッタンディスカー で、会話が続かない。 さらに、C使いのターン。 関数に関数を渡せる? Cだって関数ポインタ渡せますよ。 チューリング完全なんだから、どんなプログラムだって書けますよ。 と仕掛けてきた。そこで、 じゃあ、3回呼ぶと動作が変わる関数を書いてみて。 f(); f(); f(); f(); と呼ぶと、 3 2 1 liftoff って出力されるやつ。ロケットみたいな。 できました。 #include <stdio.h> void f() { static int count = 3; if (co

    関数型言語って何がすごいんですか - Gemmaの日記
  • foldr と foldl の違い - 言語ゲーム

    こないだの属性文法の記事では沢山 foldr が出てきます。foldr や foldl は関数型言語におけるループ構文です。私のようなにわか関数信者は嬉しがってつい再帰を使ってしまいますが、再帰のようなパターンを良しとしない物の Haskell プログラマは fold を使います(多分)。ただ、foldr や foldl というネーミングは、文章が左から右へ流れると信じて疑わない欧米帝国主義の醜悪な悪習と言わないまでも、再帰についての重要な違いを軽視しているような印象を受けます。これらの関数は、当は全然対称じゃないのです。というわけで調べてみます。 さて、足し算はどっちに結合しても良いので、1 + 2 + 3 + 4は次のように書けます。 foldr (+) 4 [1, 2, 3] -- 1 + (2 + (3 + 4)) == 10 foldl (+) 1 [2, 3, 4] --

    foldr と foldl の違い - 言語ゲーム
  • http://www.jmuk.org/diary/index.php/2008/01/25/2/

  • 第16回 すべてのものは関数である

    すべてのものは…である SmalltalkやRubyなど,いわゆる生粋のオブジェクト指向言語では,「すべてのものはオブジェクトである」(everything is an object)と言われることがある。JavaC++などと異なり,整数の「123」や浮動小数の「4.56」といった,基データ型の値もオブジェクトとして扱うことができるからだ(ちなみに,現在のJavaには自動ボックス化という機能があり,基データ型からオブジェクト型への変換が自動で行われる場合も多い。しかし,両者の差異が全くなくなったわけではない。例えば123.toString()のようなメソッド呼び出しはできない)。 では,オブジェクト指向言語のまねをして,関数型言語において「すべてのものは関数である」と言うことはできるだろうか? もちろん,オブジェクト指向と違って,関数型プログラミングはあくまで「数学的な(=副作用のな

    第16回 すべてのものは関数である
  • はてなブログ | 無料ブログを作成しよう

    キジ焼き丼とおばんざい シンプルな我が家の定番のおばんざいたち 赤梅酢の新生姜漬け 昨夜は香ばしいきじ焼き丼に添えて。大きめにカットした鶏とししとうを魚グリルでこんがり焼く。 タレをつけながら煙モクモク、焼き鳥屋さんみたいな香ばしい香りがキッチンいっぱいに広がります 磯の味も…

    はてなブログ | 無料ブログを作成しよう
  • 純粋関数型言語とそうでない言語の違い - lethevert is a programmer

    某所の議論を見て思ったのだけれど、 普通のオブジェクト指向言語でプログラミングする時は、対象を内在化してプログラムを書くという手法が比較的多く採用されているような気がする。特に複雑な問題を定式化するときは、対象をオブジェクトの形で表現するというところから設計が開始する。UMLなんかはその線で進めることが前提になっている気がする。 対象を内在化してオブジェクトの関係を固定化すると、対象に対する操作は自然に副作用を伴う操作になる。そのため、そのようなアプローチで進めた設計は、純粋関数型言語とは相容れないものになってしまう。おそらく、普通のオブジェクト指向言語で育ったプログラマは、この壁にぶつかってなかなか乗り越えられないのではないかと思う。 純粋関数型言語を相手にするときは、対象を内在化してプログラムを書くという手法は全面的に捨てる必要がある。代わりに、対象を外在化するというアプローチが必要に

    純粋関数型言語とそうでない言語の違い - lethevert is a programmer
  • 第14回 型=命題,プログラム=証明

    MLの型と型推論 この連載でも何回か触れたが,MLやHaskellなど多くの静的型付き関数型言語には,「型推論」という機能がある。これは,プログラム中の変数や関数の型を省略しても,「もっとも一般的」な型を言語処理系が勝手に推論してくれる,という機能だ。 例えば,次のように,二つの引数xとyを受け取って,(x, y)という組を返す関数pairを定義してみよう。 > ocaml Objective Caml version 3.10.0 # let pair = fun x y -> (x, y) ;; val pair : 'a -> 'b -> 'a * 'b = <fun> # このように,pairは「何らかの型'aを持つ値と,何らかの型'bを持つ値を受け取り,'a型の値と'b型の値の組を返す」と推論される。一般に,t1 -> t2は,型t1の値を受け取って,型t2の値を返す関数の型であ

    第14回 型=命題,プログラム=証明
  • Type Theory and Functional Programming

    Simon Thompson ISBN 0-201-41667-0, Addison-Wesley, 1991. This is now out of print. I had hoped to prepare a revised version before making it available online, but sadly this hasn't happened. So, you can get the original version, warts and all, from CafePress or free from here. Any errata will be gratefully received and added to the list below. Preface (html) Contents and Introduction (PostScript)

    Type Theory and Functional Programming
  • 第12回 「型推論」の実装法

    型推論:「コンピュータ以前」からML,Java 7まで OCamlをはじめ,MLやHaskellなど,多くの型付き関数型言語には型推論という機能がある。この連載でも,暗に陽に,OCamlの型推論機能を利用してきた。 例えば,以下のような関数say_hello_toを定義してみよう。文字列引数nameを受け取り,nameの前に定数文字列"hello "を付け加えて返す,という関数だ。 # let say_hello_to name = "hello " ^ name ;; val say_hello_to : string -> string = <fun> このように,引数や返り値の型を指定しなくても,say_hello_toはstring ->string型(文字列を受け取り,文字列を返す関数)であると自動推論される。 ただし,(例えばプログラムを読みやすくするために)もし型を書きたけれ

    第12回 「型推論」の実装法
  • [prog] 関数型プログラマはプログラムを木だと思ってるらしい - Greenbear Diary (2007-05-29)

    ■ [softs] Firefoxの許せないところ about="_blank" が新規ウィンドウで開く。お前はそれでもタブブラウザか。 C-hで履歴が開く。いやWindows版は仕方ないとしても、せめてLinux版はBackspaceとして振舞ってくれよ。 いやまあTab Mix Plusを入れればいいんですけど、 「新規ウィンドウを開かない」くらいデフォルトでできてほしい。 ■ [ruby] それany?で link_exist = (doc/:a).any?{|a| a[:href] == 'http://example.com:3000'} 最初「それfindで」というタイトルにしてて、書いてる途中でany?のことを思い出したのは秘密。 あとEnumerable any?で検索するとるりまが一番上に 来ますね。リプレースはすでに始まっているのだ。 ■ [Ruby/SDL] 等幅フォ

    [prog] 関数型プログラマはプログラムを木だと思ってるらしい - Greenbear Diary (2007-05-29)
    takkan_m
    takkan_m 2007/05/30
    [call/cc]
  • 型推論と型検査、静的な型つけと動的な型つけ、強い型つけと弱い型つけ - sumiiのブログ

    ついでに追加。 型推論:変数や式の型をプログラマが宣言しなくても、言語処理系が文脈から推論してくれる機構。MLとかHaskellとか。 型検査:変数や式の型が合っていることを言語処理系が(普通は静的に)チェックしてくれる機構。CとかJavaとか、MLやHaskellも。 静的な型つけ:プログラムの実行前に型を検査する機構。MLとかHaskellとかCとかJavaとか。 動的な型つけ:プログラムの実行中に型を検査する機構。LispとかSchemeとかPerlとか。 強い型つけ:検査を通れば、安全さ(safety)が保証される、という(普通は静的な)型つけ。MLとかHaskellとかJavaとか。Javaはバグがあったりしたので少し怪しいですが。 弱い型つけ:検査を通っても、安全さ(safety)は保証されない、という型つけ。CとかPascalとか。 安全さ(safety):プログラムが言語仕

    型推論と型検査、静的な型つけと動的な型つけ、強い型つけと弱い型つけ - sumiiのブログ
  • azito.com

    This domain may be for sale!

  • Karetta|Gaucheプログラミング|「Lisp脳」の謎に迫る - Schemeプログラマの発想

    この原稿の最新版について この原稿に加筆した最新版が書籍「プログラミングGauche」に収録されています。 引用や紹介をされる方はなるべく書籍収録版を参照してください。 他の言語のプログラマがSchemeプログラムを書くとき、 どうしても発想が手続き的(procedural)になりがちです。 LispプログラマやSchemeプログラマの発想は手続き的な発想とはどうも違うらしい、 ということは分かるのですが、具体的に何が違うのでしょうか? ここではこの謎に迫ってみましょう。 実例 例えばこんな例題があります。 1から100までの数をプリントするプログラムを書け。ただし3の倍数のときは数の代わりに「Fizz」と、5の倍数のときは「Buzz」とプリントし、3と5両方の倍数の場合には「FizzBuzz」とプリントすること。 どうしてプログラマに・・・プログラムが書けないのか? (原題: Why

    takkan_m
    takkan_m 2007/05/15
    激しく同意
  • Unlambda

    Your Functional Programming Language Nightmares Come True. 関数型言語の悪夢がやってくる Unlambdaについて 公式サイト: http://www.eleves.ens.fr:8080/home/madore/programs/unlambda/ Unlambdaは、obfuscated programming languages (混乱させるプログラム言語、といったところでしょうか) の一種として開発された言語です。 しかしただそれだけではなく、純粋関数型言語というもう一つの特徴も持っています。 そのためオブジェクトは関数しかなく、数値や文字列などというものは(組み込みでは)存在しません。 しかしこの極限的な状況でのプログラムには、実に楽しいものがあります。 このページでは、そんなUnlambdaのプログラミングの解説を行い

  • Cleanで関数プログラミング 【総目次】

    上のページへ 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です。

  • 速攻MinCamlコンパイラ概説

    takkan_m
    takkan_m 2006/04/01
    MiniCamlコンパイラを作る。