実験

正規表現についていくつか

$1とか$2とかについて 選択させたい部分をカッコで囲むことがあるけど、やっぱりそれも$1とか$2とかを束縛するのかな?やってみよう。 my $str = 'interior and exterior'; while ($str =~ /(in|ex)\w+/g) { print "\$& = $&, \$1 = $1\n"; } http://ideone.…

文字クラスに関して

文字クラスとして、[1-3]とか[w-y]とかできるかな? 今まで文字クラスとして[0-9]や[0-9a-zA-Z_]などを学んだけど、[3-5]とか[w-y]とか行けるのかな?やってみた。 my @filename = ('hoge_3.log', 'hoge_4.log', 'hoge_5.log', 'hoge_6.log'); foreach (@fil…

ハッシュをリストとして扱ってみる

前回のエントリで、ハッシュを作るときの書式 my %hash = ('foo'=>42, 'bar'=>23, 'baz'=>3.14); が、リストを代入しているように見えて仕方が無い、みたいな話しをしたけど、それの続きっぽい感じで。じゃあ、%hashをリストとしてforeachにぶち込んでみると…

sort関数について

数値で昇順にしたい場合、比較のためのコードの断片を書いたけど、それに関して。 このコードブロックは、引数なのか? 引数なら普通カンマで区切るよねー、ということで書いてみた。http://ideone.com/ndKeH my @nums = (31, 41, 59, 26, 53, 58, 9, 93); m…

二重引用符内の変数の展開に関して

二重引用符内に変数名があったら、展開してくれることはつい最近勉強した。たとえば、 my $n = 42; print "$n\n"; っていうコードがあったとき、ちゃんと42と改行文字を表示してくれるってことは、 現在の環境から識別子 $n を検索し、42という数値を見つけ…

配列の変な場所に要素を追加したらどうなるのかな?

PHPではインデックスに欠番ができるけど、Perlではどうなるか実験。 use strict; use warnings; my @nums = (1, 2, 3,); # 添字が9の場所に代入すると、添字の欠番ができる? $nums[9] = 10; my $len = @nums; print "length of array: $len\n"; foreach (@n…

PHPの連想配列に実数のキーを使ってみた

PHPの連想配列に対し、1未満の実数値をキーとしていくつか要素を追加してみたけど、どういうわけか要素が1個から増えない。キーが勝手にintになってしまい、最後の要素だけが残ってるのかな?

PHPでオーバーロードしたい

オーバーロードは空気のように当たり前の存在だったので、当然のようにPHPでやってしまってエラーが出た。エラーメッセージの意味を理解するのに数秒かかったくらいだ。そのとき、 オーバーロードは実行時のオブジェクトの型ではなく、変数の型が分からない…

PHP間でのオブジェクトの受け渡し

先日の話の続きで、PHP間でデータを受け渡しに関して。その方法をリサーチして、自分なりにいくつかの候補に絞って、それぞれについて実験してみたのでメモメモ。情報を送信する側のPHPをsend.php、受信する側のPHPをreceive.phpとし、受け渡しするデータは…

StackOverflowExceptionはcatchできない

僕は素人なので、Lisp処理系作ったらとりあえずYコンビネータ動かしてみたくなる。ってことで、scallopでもやろうとして、間違って次のようなコードを評価してしまった。 (define Y (lambda (f) ((lambda (g) (g g)) (lambda (g) (f (lambda (x) ((g g) x)))…

マクロ定義の練習

今回はid:yagiey:20100126:1264525307で紹介したレガシーなマクロに関して。っていうか前回もだったけど。 id:yagiey:20100213:1266088272で 「新たな変数名を作り出す」という要請に対しての解決策という形で紹介される伝統的なマクロを次回。 といってみた…

気になったので実験してみた

useしたものは、局所環境フレームに束縛が追加されるのかな? gosh> (begin ((lambda () (begin (use srfi-1) #t))) (iota 10 1)) (1 2 3 4 5 6 7 8 9 10) あれ?iotaされてしまった。 Gaucheのドキュメント読まないと分からんなぁ。