Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?
モナド則 三つの基本則 「失敗」は付けたし 出口はない Zero と Plus 要約 このチュートリアルではいままで、技術的な議論を避けてきました。しかし、 モナドについて考えるべき技術的な要点が2、3あります。モナド演算は、 「モナド公理」として知られている、いくつかの法則群に従わなければ なりません。これらの法則は Haskell のコンパイラが強制するものでは ありません。したがって、すべての Monad のインスタンスと 宣言したものが、これらの法則に従うことを保証するのはプログラマ自身です。 Haskell の Monad クラスは、まだ見ていませんが、最小限の定義 以上にいくつかの関数を含んでいます。結局、多くのモナドは標準のモナド則 以外の規則にも従っています。Haskell のクラスにはこうした拡張されたモナド をサポートするためのものがあります。 三つの基本則 モナドの概
rubyで以下のような感じのコードを書きます。 print "xxx" sleep 2 print "yyy" sleep 2 print "zzz" xxxと出てからyyyと出てzzzと出てくるのを期待したりするのですが、このように出力されないで 実際は、しばらく待って一気にxxxyyyzzzと出力されることになります。 これは標準出力する際に、バッファに一時的にためていてある程度たまってから出力しているせいなわけで これを期待するように動かすには、 STDOUT.sync = true print "xxx" sleep 2 print "yyy" sleep 2 print "zzz" のように STDOUT.sync = true を追加すればOKです。 バッファリングされるのは標準出力だけでなく自分で書き込み用に作成したファイルへの書き込みでも同様な感じになります。 動作ログをフ
先日、MSDN のフォーラム、マネージリソースのみで構成されているクラスにIDisposeを実装するメリット を読んでいたら、いささか引っかかるまとめが書いてありました。 「いつものパン」があなたを殺す: 脳を一生、老化させない食事 (単行本) 作者: デイビッドパールマター,クリスティンロバーグ,David Perlmutter,Kristin Loberg,白澤卓二出版社/メーカー: 三笠書房発売日: 2015/01/16メディア: ハードカバーこの商品を含むブログ (12件) を見る リソースという用語は例えば次のように使われる。 ・double[],string等 → 通常リソースとは言わない。 ・Stream,Bitmap等 → マネージドリソース。 ・ポインター等 → 非マネージリソース。 マネージリソースのみで構成されているクラスにIDisposeを実装するメリット
[edit] 要約 基本的な入出力機能のためのクラスです。 File::Constants は、File から IO へ移動しました。 多言語化と IO のエンコーディング IO オブジェクトはエンコーディングを持ちます。エンコーディングの影響を受けるメソッドと受けないメソッドがあります。 影響を受けるメソッドでは、IO のエンコーディングに従い読み込まれた文字列のエンコーディングが決定されます。また IO のエンコーディングを適切に設定することにより、読み込み時・書き込み時に文字列のエンコーディングを変換させることもできます。 エンコーディングの影響を受けるメソッドと受けないメソッド IO の読み込みメソッドは2種類存在します。テキスト読み込みメソッドとバイナリ読み込みメソッドです。 テキスト読み込みメソッドは IO のエンコーディングの影響をうけます。詳しくは「IO のエンコーディング
The first fully converged io.js/node.js release coming soon. Last week was a typical San Francisco summer, sunny with occasionally hostile winds. This was the setting for 40 node.js contributors to gather for the first ever Collaborator Summit, organized by the new Node.js Foundation. A year ago we didn’t have 40 contributors to gather but today this represents only a fraction of the total contrib
nodeのSocket.ioっぽい物のRuby版を作った。 https://github.com/shokai/sinatra-rocketio 依存 EventMachineが有効なWebサーバー(thinとか)と、jQueryが必要。 Rubyは1.8.7〜2.0.0まで動く。 Sinatraで使う インストール gem install sinatra-rocketio ブラウザとか回線に応じてWebSocketとCometの使える方が自動的に選ばれる。 切断されても定期的に再接続を試みるようになってる。 sinatraに読みこむだけで使える。sinatraのプロセス内にwebsocketサーバーも組み込まれる。 require 'sinatra' require 'sinatra/rocketio' modular styleではclass内でregisterすればok class
『IOモナドで副作用を実現する』 以下の文章は、第13章の一部として「関数型言語の7つの特徴」のあとの「関数型言語の分類」に続く節として書いたものです。 他の文章に比べてバランスが悪かったため、最終段階でボツにしました。 →『オブジェクト指向でなぜつくるのか第2版』のサポートページへ 純粋関数型言語であっても、プログラム全体としては画面やデータベースやネットワークなどとの外部入出力を実現する必要があります。このため、言語仕様として副作用を認めないとしても、なんらかの仕組みを用意して入出力を実現する必要があります。これはHaskellでは「モナド」と呼ぶ仕組みが相当します。今のところモナドを言語標準の仕組みにしているのはHaskellだけですが、わかりづらいことで悪名高い仕組みでもあるため、ここで概要を説明しておきましょう。突っ込んだ内容になりますので、Haskellやモナドに特別な関心が
Author:あろは (alohakun) WAKATSUKI toshihiro 連絡先 : alohakun ___at___ gmail.com mixi : http://mixi.jp/show_friend.pl?id=182927 twitter : http://twitter.com/alohakun abstract プログラミングという人間の知的行為を体系化し,単なる職人芸ではなく,サイエンスにするための研究をしています. 具体的には,等価変換計算モデルに基づいた,仕様記述からのプログラム合成の研究をしています. もっと噛み砕くと,プログラムの正しさをどのように定式化し,どのような枠組みで,どのように変換を進めていけば,正しさを保証したまま,効率的なプログラムを手に入れることができるのか,ということについて研究しています. キーワード : equivalent tra
each(rs = $/) {|line| ... } -> self each(rs = $/) -> Enumerable::Enumerator each_line(rs = $/) {|line| ... } -> self each_line(rs = $/) -> Enumerable::Enumerator IO の現在位置から 1 行ずつ文字列として読み込み、それを引数として 与えられたブロックを実行します。 ブロックが与えられなかった場合は、自身から生成した Enumerable::Enumerator オブジェクトを返します。 [PARAM] rs: 行の区切りを文字列で指定します。rs に nil を指定すると行区切りなしとみなします。 空文字列 "" を指定すると連続する改行を行の区切りとみなします(パラグラフモード)。 [EXCEPTION] IOError: 自
Perl › ファイル入出力 › here Perlの出力関数であるprint関数は、バッファリングを行います。バッファリングとは「データを貯めておく」という意味です。Perlのprint関数は実際に呼び出されても、即座にファイルに内容を書き出しません。書き込み内容をバッファリングしておいて、バッファがある容量をこえると実際にファイルに書き出します。 バッファリングを無効にしたいという場合は、以下の記事をご覧ください。 バッファリングを無効にする 以下はバッファリングを実感するサンプルです。すぐにはファイルに書き込まれないことがわかると思います。 use strict; use warnings; # 書き込み用のファイル( 上書きするので注意 ) my $file = "sample20080811.txt"; open(my $fh, ">", $file) or die "Canno
ITProのScala連載「刺激を求める技術者に捧げるScala講座」の第14回 関数脳のつくり方 Second Season 〜モナドで悟りをひらく〜がはてなブックマークで150ブクマ超えるなど注目を集めていますが、読んで見ると初学者に誤解を与える箇所が散見されるので、一応、連載に関わってる者(といっても1回記事書いただけですが)の一人としてツッコミを入れさせていただきます。 「参照透明性を保持しながら手続き型的な記述をするための枠組み」?(p.1) モナドとは,関数型言語で,参照透明性を保持しながら手続き型的な記述をするための枠組みです。 早速ですが、これは、IOモナドやStateモナドには当てはまっても、全てのモナドについて当てはまるものではないですよね。たとえば、Maybeモナドではこれは当てはまりません。 「モナドがHaskellで必要な理由」? これはページタイトルの一部ですが
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く