2008年 03月 13日

アイデアはもっと、日常的なものだなぁと感じる。アイデア、無限の中から拾いあげてくるもの、生活の中で、それはいつもまわりにあるけれど、気付くことが、難しい。写真もよく似てる。ゼロからではなくて、いつもまわりにあるものを敏感に感じとる、形にする。でもみんな同じだ。写真だけじゃない。

「靴の見えないところに入っていて、歩くたびにかかとをつっつく石を取り除いた。」

を暗喩的に解釈する。

散歩

昼に少し散歩をする。面白いダイアリを書いている人がいまなにをしているかを想像する。想像で、確かに人間がいることを実感する。

Joel

プログラムを書くときには、単に自己表現をしているのではなく、コンパイラが理解できるように書くものです。「これはコンパイラが理解できるだろうか」と絶えず自問しながら書くわけです。同じことは人間が読む文章にも当てはまります。多くの人が読んで理解できるように書く必要があり、そのためにはどういう言い方をすべきかと考え、読者の目にどう見えるか想像する必要があります。どうしたら理解してもらえるかよく考えることです。

http://codezine.jp/a/article/aid/2292.aspx?p=2

またこのヒトカヨーって思って疑いながら (なんかあんまり好きじゃない) 読みはじめたらおもしろかった。

なんかすごい憤りを感じるというか、人間的にその発言ってどうなの、って感じだ……


Good Dog Happy Men / DVD

なんかでるらしい。すごい楽しみだ!

たのしみがふえた。というか今年こそちゃんとライブに行きたい……

2008年 03月 12日

靴の見えないところに入っていて、歩くたびにかかとをつっつく石を取り除いた。

あれhaやばい

ヤクルト吹いた。いまからすげー不安だ\(^o^)/

Perl のリスト、ハッシュのマージ、reduce メモ

Ruby での

require "pp"

data = [
	{ :name => "foo", :value => 1 },
	{ :name => "bar", :value => 2 },
	{ :name => "baz", :value => 3 },
]


pp data.inject(0) {|r,i| r + i[:value] }

pp data.inject({}) {|r,i| r.update( i[:name] => i ) }

__END__
6
{"baz"=>{:value=>3, :name=>"baz"},
 "foo"=>{:value=>1, :name=>"foo"},
 "bar"=>{:value=>2, :name=>"bar"}}
use List::Util qw/reduce/;

use Data::Dumper;
sub p ($) { print Dumper shift }

my $data = [
	{ name => "foo", value => 1 },
	{ name => "bar", value => 2 },
	{ name => "baz", value => 3 },
];

p reduce { $a + $b->{value} } 0, @$data;

p reduce { +{ %$a, $b->{name} => $b } } {}, @$data;

__END__
$VAR1 = 6;
$VAR1 = {
          'bar' => {
                     'value' => 2,
                     'name' => 'bar'
                   },
          'baz' => {
                     'value' => 3,
                     'name' => 'baz'
                   },
          'foo' => {
                     'value' => 1,
                     'name' => 'foo'
                   }
        };

引数のとりかた的に Perl は初期値の与えかたが自然な感じがする。

2008年 03月 11日

List::Enumerator

慣れるために書いてみる

package List::Enumerator;

use strict;
use warnings;

use base qw/Exporter/;
our @EXPORT = qw/E/;

use Exception::Class ( "StopEnumeration ");

sub E {
	List::Enumerator->new(@_);
}


sub new {
	my ($class, @args) = @_;

	my $self = {};
	bless $self, $class;

	$self->_init(@args);

	$self;
}

sub _init {
	my ($self, @args) = @_;

	my $i = 0;
	$self->_init_with_fun(sub {
		$i < @args ? $args[$i++] : StopEnumeration->throw;
	});
}

sub _init_with_fun {
	my ($self, $fun) = @_;
	$self->{fun} = $fun;
}

sub next {
	my $self = shift;
	$self->{fun}->();
}

sub each {
	my ($self, $fun) = @_;
	eval {
		while (1) {
			local $_ = $self->next;
			$fun->($_);
		}
	}; if (my $e = Exception::Class->caught('StopEnumeration')) {
	}
}

sub map {
	my ($self, $fun) = @_;
	my @ret = ();
	$self->each(sub {
		push @ret, $fun->($_);
	});
	wantarray ? @ret : List::Enumerator->new(@ret);
}
use Data::Dumper;
sub p { print Dumper shift }

use List::Enumerator;


E(1, 2, 3)->each(sub {
	p shift;
	p $_;
});

p [ E(1, 2, 3)->map(sub { $_ * $_; }) ];

E(1, 2, 3)->map(sub {
	$_ * $_;
})->each(sub {
	p $_;
});

cycle かくまえに眠くなった

もうちょっと経ったら (謎) autobox さわってみよう