タグ

functional programmingに関するlolicsystemのブックマーク (14)

  • 本物のプログラマはHaskellを使う:ITpro

    筆者 shelarcy Haskellは,関数型プログラミングというジャンルに属する言語です。Haskellや関数型プログラミングを題材に物事を見ていくことで,今まで思いもよらなかったような未知の世界を知ることができるでしょう。 プログラミング言語を学ぶという行為には, 言語の基的な文法や考え方を理解する 言語の文化圏で広く使われている考え方に親しんでその言語らしい書き方を習得する 単に言語を使ってできること以上の知恵を学ぶ の3段階があります。この連載では,三つ目の段階を目標に,Haskellプログラミングの世界を一つひとつ丁寧に紹介していきます。 更新は毎月第1水曜日(1月のみ第2水曜日)

    本物のプログラマはHaskellを使う:ITpro
  • 第11回 クロージャによる超軽量並行プロセスの簡単実装法

    最近,ネットの一部で「Erlang」(発音はアーランまたはエアラン)というプログラミング言語が流行している(参考リンク)。Erlangはスウェーデンの通信機器メーカーであるエリクソンにて開発された言語で,エリクソン内部や通信業界はもちろん,Twitter(関連記事)などのオンライン・サービスでも採用されているという。 Erlangの特徴は,複数のプロセスが通信をしながら計算をする「並行プログラミング」を,言語の機能として強力にサポートしていることだ。C言語などの逐次プログラミング言語は,プロセスや通信の機能を内蔵しておらず,こうした機能をオペレーティング・システムに「外注」している。しかし,そのような外付けの仕組みは,メモリー消費量や速度,開発効率などの点でオーバーへッドが大きい。Erlangのような並行プログラミング言語では,プロセスや通信といった機能をプリミティブとして実装することによ

    第11回 クロージャによる超軽量並行プロセスの簡単実装法
  • HaskellによるHaskellのための開発環境Leksah 0.1 - builder by ZDNet Japan

    単純なインフラ製品の販売ではない DX、コンテナプラットフォームの実証など 自社の取り組みで得られた知見を顧客に提案 ITインフラ運用からの解放 HCI+JP1による統合運用による負荷激減で 次世代IT部門への役割変革へ一歩前進 時代はサーバ仮想化からコンテナへ あらためて整理したい企業ITにおける コンテナ活用の基礎と採用メリットを紹介 コンテナをエンプラITに! コンテナ活用の基礎 番実装が増える背景とメリット ライバル同士がタッグを組む理由 マイクロソフトとヴイエムウェアが連携し パブリッククラウドへの移行を支援 激変するビジネス環境の中でのDX モダンアプリケーション戦略への取り組みが 市場の競争力の源泉となる RPAによる自動化を年30万で実現 小さな投資が目に見える大きな効果に! デジタル化によるわかりやすい業務効率向上 セキュリティモデルは変わった! クラウド活用、リモート

  • Amazon.co.jp: Higher-Order Perl: Transforming Programs with Programs: Dominus, Mark: 本

    Amazon.co.jp: Higher-Order Perl: Transforming Programs with Programs: Dominus, Mark: 本
  • サービス終了のお知らせ

    サービス終了のお知らせ いつもYahoo! JAPANのサービスをご利用いただき誠にありがとうございます。 お客様がアクセスされたサービスは日までにサービスを終了いたしました。 今後ともYahoo! JAPANのサービスをご愛顧くださいますよう、よろしくお願いいたします。

  • SICPを読む(39) 問題 2.6 Church数 - ボクノス

    わからないときは、わかっている所を書き出そう。 Church数ってなんだ!! 404 Blog Not Found:TuringとChurchの狭間で 要は、ある数は、ある関数fを何回xに適用するか、という定義にしてしまうのである。 Church 数 -- OCaml.JP OCamlだけど、わかりやすい。 selflearn @ ウィキ - SICP (問題2.1 -) かなり参考になりました。 なんとなく掴めた所でコーディング。 まずは定義 Church数を定義すると。 (define zero (lambda (f) (lambda (x) x))) (define one (lambda (f) (lambda (x) (f x)))) (define two (lambda (f) (lambda (x) (f (f x))))) 実行してみると、 #を返すだけで、何をやっている

    SICPを読む(39) 問題 2.6 Church数 - ボクノス
  • SICP (問題2.1 -) - selflearn @ ウィキ

    (define (make-rat n d) (define (rat abs-n abs-d g symbol) (cond ((= d 0) (error "denom MUST NOT zero.")) (else (cons (* symbol (/ abs-n g)) (/ abs-d g))))) (rat (abs n) (abs d) (abs (gcd n d)) (/ (* n d) (* (abs n) (abs d))))) 正負を決定する時の+/-の判別処理と、その結果をsymbolに入れて使っている部分は自分でも面白いと思うけど、いかんせん全体で汚いコードになってしまっている。それに対して、解答の記述は (define (make-rat n d) (let ((g (abs (gcd n d)))) (if (< d 0) (cons (/ (- n) g)

    SICP (問題2.1 -) - selflearn @ ウィキ
  • 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の狭間で
  • groovyとラムダ式(4):自由変数の束縛 - 檜山正幸のキマイラ飼育記 (はてなBlog)

    λx.(x + a) のようなラムダ式で、xは仮引数(ラムダ式の束縛変数といいます)ですが、定義体内に仮引数リストにない変数aが出てきますよね。aみたいな、仮引数宣言されてない変数を自由変数と呼びます。 自由変数が、いつどのように束縛(具体化)されるかは、けっこう重要な問題です。で、調べてみる。 // 自由変数の束縛タイミング a = 3 X = {|x| x + a} a = 8 println X(2) // 5か10か? 10 実行時に束縛されてる。ウーン、これはどうかなぁ。インタプリタでは、まー、普通の動作なのですが、実行時の環境によってクロージャの挙動が変わってしまいます。それを利用するテクニックもあるでしょうけど、分かりにくくてハマると思いますよ。 束縛が実行時(評価時)に起きるなら、定義時の環境(自由変数の束縛状況/値)はどうでもいいはずです。なのに… // 自由変数の束縛

    groovyとラムダ式(4):自由変数の束縛 - 檜山正幸のキマイラ飼育記 (はてなBlog)
  • λ Calculus - まずは遅延評価から : 404 Blog Not Found

    2008年02月04日07:00 カテゴリLightweight Languages λ Calculus - まずは遅延評価から うーん、まずY Combinatorというのはおじさんたちが悪かったかな。ギター習いたてでいきなりFの音を出すようなもんだから。 Haskell のリストと遅延評価が少し分かった - IT戦記 Y コンビネータって何? - IT戦記 まずは、遅延評価についてきちんとおさらいしておこう。 慌てるな、ループは急に止まらない まずは、以下の式を考えてみる。 (function(a, b, c){ return a ? b : c; })(true, 1, 1+1); 実行してみると、1となるはずだ。しかしここで重要なのはこのことじゃない。後ろの1+1が実行されるかだ。このことはどうやって確認したらよいだろうか。以下のようにしてみればいいはずだ。 var ELSE =

    λ Calculus - まずは遅延評価から : 404 Blog Not Found
  • ホワット・ア・ワンダフル・ワールド 2 つの原理と文化

    最近のいまさら過ぎる Y コンビネータネタとかが 100 近いブクマを集めている様子とかには,正直辟易していたのですが. (あんたらもしかして,ポール・グレアムの VC (http://ycombinator.com/) の名前の由来とかを,今まで知らなかったの ? とか.Web 2.0 プログラマ (?) 向けの VC のような気がするのに… これで,VC の面接の質問の一番最初が 「我々の名前の意味を知ってますか ?」 とかだったら皮肉過ぎる w まぁ,MIT とかスタンフォードとかの計算機科学部を出てれば 100 % 知ってるだろうし,そういう人たち対象なのでしょうが) 2005 年とかにも話題になって,sumii さんとかが同じようにネタにしてたんですよね.Y コンビネータとか,基礎的な計算機科学の概念を勉強する最大の価値は,何度も定期的に繰り返されるブームに踊らされないで済むとい

  • d.y.d. memo: POPL 2

    17:17 08/01/30 ところで C++JavaScriptPHP が批判されてるのを見ると思わず何か言いたくなってしまうのだけど、 考えてみるに、他の言語だと割とどうでもいい。そういう意味では、今の自分が好きなプログラミング言語は この3つということになるのかなあ……などと徒然なるままに思いました。 単純に、つきあいが長い方から3つというだけかもしれない。 いやしかし、PHPに対する批判の多くはその通りであるとは思うのですが。 Attacking PHP で触れられてる「リストであり辞書でもある」 array ってあれは普通に便利じゃないです? 結構他の言語でも欲しくなるのですが。 17:08 08/01/29 PHP で Yコンビネータ PHP じゃ Y コンビネータつくれない と聞いて。 <?php // PHPでは関数呼び出しは 関数名(...) か 変数(...

    lolicsystem
    lolicsystem 2008/02/05
    PHP で Yコンビネータ
  • http://nicosia.is.s.u-tokyo.ac.jp/pub/essay/hagiya/h/curry

  • JavaScriptでカリー化 - 檜山正幸のキマイラ飼育記 (はてなBlog)

    JavaScriptでカリー化。ありがち、つうか実際にあるでしょうね。小ネタと思ってやりはじめたら、意外と混乱した。一種のメタプログラミングのはずだが、実際にはテキスト加工処理。 内容: カリー化ってなに? カリー化を行う関数を作る:準備 カリー化を行う関数を作る:テキストのパッチワーク カリー化を行う関数を作る:組み立て ●カリー化ってなに? 2引数の関数f(x, y)に対して、「gがfのカリー化」だとは、f(x, y) = g(x)(y) が常に成立すること -- ゴチャゴチャ説明するより実例実例: functio sum(x, y) { return x + y; } このsumのカリー化の例: function curried_sum(x) { return function (y) {return sum(x, y);} } curreid_sum関数は1引数で、戻り値として関数

    JavaScriptでカリー化 - 檜山正幸のキマイラ飼育記 (はてなBlog)
  • 1