2010-01-01から1年間の記事一覧

可変個の集合から、直積の集合を作る(その3)

無限リストの直積を列挙するとき、うまくいかないことを昨日のエントリで書いた。これを解決する方法がid:doloopwhile:20100707:1278504056で紹介されている。Clojureやったこと無いけど、良いきっかけかな。今度読んでみる。 無限リストを有限リストに小分…

可変個の集合から、直積の集合を作る(その2)

C#

直積の件でトラバもらった。→ 可変個の集合から、直積の集合を作る - チキン煮込みチーズミックス4辛 自分がPythonよくわからないので、内容は理解できなかったけども>< で、そのトラバをうけて、IEnumerableって無限リスト的に扱えるのかちょっと気になっ…

Lucky Love

from "The Bridge", by Ace Of Base その日聴いた曲の中から適当に一曲紹介するエントリを書こう。できるだけ毎日。

標準ライブラリにFold相当のメソッドがあった

C#

昨日のエントリ「可変個の集合から、直積の集合を作る - チキン煮込みチーズミックス4辛」で、Foldを自作したけど、これと同じ働きをするメソッドが標準であるみたいだ。Enumerable.Aggregateって拡張メソッドがそれ。ってことで、該当箇所をこっちで書き換…

「俺ツイッタークライアントを作ろう!」に参加してきた

去る4日に行われた第1回YMPAミーティング「俺ツイッタークライアントを作ろう!」(略称:俺ツイ)に参加させてもらった。初回からいきなり遅刻してしまい、みなさんすみませんでした...。タイトルの通り、それぞれ思い思いのクライアント(botでも可)を作…

可変個の集合から、直積の集合を作る

C#

集合の個数が固定ならば、[C#]forever for(のコメント欄)のようにすれば簡単だけど、可変個の場合ちょっとややこしいなぁーとか思いつつググってたら、こんなん見つけた。 id:youkoso_guest:20081212:1229089595 reduceってなんぞ?ってな感じだったので、…

My Angel Rocks Back And Forth

From "Rounds", By Four Tet Roundsアーティスト: Four Tet出版社/メーカー: Domino発売日: 2006/02/01メディア: CD購入: 1人 クリック: 4回この商品を含むブログ (2件) を見る

とうとうぽちってしまった

東プレ NG01B0 REALFORCE91UBK出版社/メーカー: 東プレ発売日: 2006/02/25メディア: Personal Computers購入: 14人 クリック: 732回この商品を含むブログ (62件) を見る昨日の午後にポチッて、今日発送。明日には届くようだ。楽しみ!

演習問題

25ページで止まっとる。全然読めてないな。今のところプログラムの勉強というか英語の長文読解のような感じ。とりあえず、演習問題の回答でも書いとこう。 Exercise 1.1 次の式を順にインタプリタで評価する場合、評価結果がどうなるかしらべなさい。 gosh> …

東プレのRealforce

いろんなところで聞く評判の高さ。使ってみたいと思うけどホイホイと買える値段ではない。「どこか試用できるお店なんかあれば良いなー」とか思いつつなんとなくtwitterでつぶやいてみたら、とても近くにお住まいの方から、貸しますよとのリプライが!twitte…

FKB89Jの静音化

ちょっと前に買ったFilcoのFKB89J。カチャカチャうるさいのはこいつの長所であり短所であるようだ。タイピングが気持ちいいけど、やっぱり周りを気にしてしまう。ってことで、FKB89Jの静音化の工程を紹介しているブログを最近見つけたので、真似してやってみ…

Change Comes Around

from "Mood Swings", by Harem Scarem

brainf*ckらめぇぇぇぇ

C#

激しく今さら感漂いまくりだけど、brainf*ck作ってみた。まあいろいろ突っ込み所はあると思いますが勘弁してね。 using System; using System.IO; using System.Text; namespace Brainf_ckProcessor { class Program { static void Main(string[] args) { //…

欲張り過ぎ?

SICPを読み始めたが読むペースが劇的に遅い。それもそのはず、何を血迷ったか原著を買ってしまっていたのだ!洋書も普通に読めるようになりたいとの動機から、また、若干翻訳が読みづらいとのレビューを受けて。尊敬する和田先生ごめんなさい...。 電子辞書…

SICP学習の参考に

いまだに着手してない...。 ブログ SICPを取り扱ったブログを検索してみた。大勢の方が書いてますね。 SICP関数型言語の勉強に「計算機プログラムの構造と解釈」を読もう - higepon blog http://d.hatena.ne.jp/yinkyweb/ awacio.log http://d.hatena.ne.jp/…

読みたい本

The Seasoned Schemer (The MIT Press)作者: Daniel P. Friedman,Matthias Felleisen,Duane Bibby,Guy Lewis Steele Jr.出版社/メーカー: The MIT Press発売日: 1995/12/21メディア: ペーパーバック購入: 3人 クリック: 17回この商品を含むブログ (21件) を…

コルーチン3(コルーチンから脱出)

プログラミングGaucheのpp298-303。前回のコルーチンによるREPLは(exit)を与えてGaucheのインタプリタを終わらせるまで無限に繰り返していたけど、今回はコルーチンから脱出してGaucheのREPLのトップレベルに戻ってくるように修正するらしい。そのために定義…

コルーチン2(call/ccでREPL)

プログラミングGaucheのpp296-298。今回はコルーチンでREPLを実装する。もちろんread、eval、printの各処理はGaucheに丸投げだけどな!それは実装とは言わないッ! 実行結果がこんな感じになるように、3つのコルーチンreader、evaluator、printerを作成する…

はてな記法

改行すると行間空きすぎるなーと思ってたら、改行はpタグになるのか。brタグを出力させようと思ったらどうすれば良いのかな? はてな記法一覧のページに「改行記法」があった! 改行タグを挿入する(改行記法) - はてなダイアリーのヘルプ 期待通りじゃなか…

call/ccとdefine

前回書いたコルーチン定義用マクロdefine-coroutineの中に、以下のようなコードがあった。 (define routine (lambda () (call/cc (lambda (return) (define yield (lambda () (call/cc (lambda (cont) (enqueue! *tasks* cont) (return))))) body ...)) ((de…

コルーチンをC#で

前回のコルーチンっぽいものをC#で書いてみた。いろいろ問題があるかもしれないけど。 無限ループなので、Ctrl+Cかなんかで中断すべし。 /// <summary>The class which represent the co-routines which should be work cooperatively.</summary> /// <typeparam name="T">The type of return value </typeparam>…

コルーチン

プログラミングGaucheのpp.294-296の「コルーチン」の前半。 call/ccでコルーチンまで実現できるらしい。ってことで、コルーチンを実現するための構文define-coroutineの定義を写経。 ;; キューの機能を使うから (use util.queue) ;; コルーチン再開するとき…

簡易な例外機構

プログラミングGaucheのpp.292-293。他の主要な言語でいうところの例外みたいな仕組みすらcall/ccで実現可能らしい。 そういえば組込みのguardもcall/ccで実装されていると聞いたことがあるな。 call/ccどんだけー。 目標とするクライアントコードは次のとお…

break/next名前付きfor-each

他の主要な手続き型言語でいうところのbreakやcontinueの仕組みを、Schemeの組込みのfor-eachに追加してやろう、ということらしい。 つまり、次のようなことができるようにしたい。 gosh> (for-each-ext return next (lambda (x) (cond ((odd? x) (next #t))…

大域脱出

call/ccを利用した大域脱出の例。今までcall/ccでウダウダ考えていたのでさすがに挙動の理解は簡単。 ただし、継続と絡めて説明しろと言われても無理。そういう意味ではcall/ccは全く理解できていない。指定したラベルを含むS式から脱出するマクロblockを定…

call/cc使ってみる4

前回(id:yagiey:20100424:1272115876)の続きっぽいけど... まず、コメントを受けて、 (and (begin (display 'a) 10) (call/cc (lambda (c) (begin (set! cont c) 10)))) の構文andはifへ展開できるので (if (begin (display 'a) 10) (call/cc (lambda (c) …

よくわからん

call/ccの中で継続を実行すれば、returnみたいな使い方ができるのは分かった。 ただ、捕捉した継続をcall/ccの外に持ち出して後で実行する場合の挙動が理解できない。 もういいや、いい加減プログラミングGauche再開するか。

call/cc使ってみる3

call/cc 入門 (Coroutine with call/cc) - MAYAHの前半を読んでみた。 演習問題みたいなのがあったので、やってみた。 gosh> (define cont #f) cont gosh> (and (call/cc (lambda (c) (begin (set! cont c) 10))) (begin (display 'a) 10)) a10 gosh> (cont …

call/cc使ってみる2

前回はcall/ccの引数の引数(つまり継続)でfを束縛して、そのあとfを実行してみた。 実行した結果を一見すると、fは(lambda (a) (inc a))のような手続きに思えるけど、mapを使ったときにちょっと違った。 今回はfで束縛せずにcall/ccの中で継続を実行してみ…

call/cc使ってみる

call/ccを実行すると、その時点での継続を捕まえられるらしい。 (call/cc (lambda (cont) body)) ってすると、継続がcontを束縛するらしい。 call/ccの戻り値はbodyだけど、bodyの中でcontが実行された場合はcontの引数がそのまま戻り値になるらしい。 cont…