Gauche > Archives > 2013/06/02

2013/06/02 10:44:25 UTCyamasushi
#
CSVの読み込みをジェネレータで書けるんじゃないかなあと、いろいろ試して見ました。(速度については・・・・・orz) gconcaternateの逆のような処理なんですけれど。これをジェネレータでなく仮想ポートでやればどうかなとか考え中です。 https://gist.github.com/yamasushi/5693264
#
ジェネレータ的にはどうかという動きなのですが、ジェネレータをジェネレータに分割して、分割したジェネレータを読み込むことで、もとのジェネレータを呼んでいくというか。分割したジェネレータを全部よまないとダメという仕様。
#
(もとの動機はCSV読み込みのlistにデータを詰めているところを、ジェネレータ的に書けるかなとおもっていたのですが、ちょっと甘かった。)
2013/06/02 13:19:22 UTCyamasushi
#
仮想ポートでやってみたのですが、性能はよろしくないです。 https://gist.github.com/yamasushi/5693628 仮想ポートはコストが高いのですね。
#
ポートのバッファを区切り文字で区切って、仮想的に複数のポートがあるように見せる、という狙いだったのですが・・・・
2013/06/02 15:45:06 UTCshiro
#
仮想ポートはいくつもの抽象化レイヤに包まれてますからね。文字のリストを作って文字列にする、って一見無駄なようですが、コンスセルのアロケートってフリーリストから取ってくるだけなんで(後でgcの負担が増えるとはいえ)、実はかなり軽い処理の部類に入ります。
2013/06/02 22:18:45 UTCyamasushi
#
csvで#\returnを処理していないのですが、大丈夫なのかなと少し考えました。read-charはMSの改行を処理しないようですし。
#
read-lineの低レベル版で、一行文だけの仮想ポートを返す、みたいな処理があるといいのかしら?とか。
2013/06/02 22:25:35 UTCyamasushi
#
あ、char-whitespace?が処理しているということでしたか。なるほど。