2008-01-01から1年間の記事一覧
30分プログラム、その419。そういえばshowは結構書いたことあるけど、readは書いたことがなかったことに気がついたので書いてみた。 正直、良くわからなん。どうも中置演算子の優先順位を考慮してreadを書かないといけないっぽいんだけど・・・。まあ、deriv…
AS3でプログラムを書いている人、ほぼ全員が混乱しているthisのスコープの話。 あれば実は、クラスごとにthisが決まるわけじゃなくて、呼び出されるたびに決っているんだ。 thisは関数の隠し引数 AS3で全ての関数は隠し引数として、thisを受け取っている。 f…
http://www.wankuma.com/seminar/20081206nagoya05/Default.aspx http://www.ustream.tv/channel/wankuma12/6のわんくま同盟 名古屋勉強会で『OCamlくんと友だちになろう!』というセッションがあるらしい。会場のほうはもう満員らしいので、ustreamのほうで…
30分プログラム、その418。mapやらfilterを定義すれば、俺々データ構造でもforが使えるらしいので、試してみる。 というわけで、for(n ちなみにscala.Randomはdeprecatedで、scala.util.Randomを使うべきらしいけど、ボクのScala処理系は古いらしくてscala.u…
30分プログラム、その417。今までで打った中で一番長いコマンドが何か気になったので、調べてみた。 使い方 # そのままだと見ずらいので、重複を削除 $ gosh 417-long_hist.scm ~/.history | sed 's/^.*;//' | uniq : 1221357578:0;/System/Library/Framewor…
30分プログラム、その416。seqコマンドをPythonで。 id:Gemmanさんがステキなコマンドを使っていたので、Pythonで再現してみる。 使い方 # 指定しないと1が始点 $ ./seq.py 5 1 2 3 4 5 # 2からスタート $ ./seq.py 2 5 2 3 4 5 # 2づつインクリメント $ ./s…
30分プログラム、その415。自前でglobのマッチングをやってみた。 いきなり正規表現にチャレンジするのは大変そうだったので、まずは簡単そうなグロブから。それも使えるメタ文字は*だけの非常に単純なやつで。 本当は、グロブのマッチにはバックトラックが…
>> (0..1000).to_a.to_s.scan(/0/).size => 193
練習 - krystal: プログラミング超初心者(文系) - Rubyist via 0〜1000に含まれる0をカウントする - http://rubikitch.com/に移転しました30分プログラム、その414。0から1000までの0の個数を数えてみる。 せっかくのErlangなのでmapreduceで。mapreduceのコ…
30分プログラム、その413。Haskellでマーシャリングにチャレンジしようとして、showとreadで十分なことに気がついた。 でも、せっかくなので途中の状態を保存して、中断可能な関数を書いてみた。たぶん、id:Gemmaさんあたりに継続使おうぜ、とか言われるんだ…
Programming in Scala, Third Editionを読んでいたら、 Scalaのforはコンパイル時にmapとかfliterとかの関数呼び出しに展開されるよ。最終的に型があっていれば、mapとかの型に制限はないんだけど、以下のような型が一般的だよ。 // CはコレクションのC clas…
30分プログラム、その412。id:athosがScalaが末尾再帰の最適化してるか気にしてたのでコードを書いて確かめてみた。 ちなみに、id:athosはjavapで逆コンパイルしてみてgotoになっていることを確認したらしい。 使い方 // 末尾再帰じゃないやつはスタックオー…
30分プログラム、その411。昨日のやつにインスパイアされて、任意引数を受けとれるmapを作ってみた。 gosh> (map* + '(1 2 3) '(2 3 4)) (3 5 7) 実際のところGaucheのmapは、任意個の引数を取れるから必要はないんだけど。 使い方 gosh> (map* (+ <> 1) (li…
30分プログラム、その410。http://d.hatena.ne.jp/hiloicoli/20081107/1226086092に影響を受けてunzip_nを書いてみる。要するに任意個の引数を取れるunzipといった感じらしい。もとは引数の数を制限できるようになっていたけど、大変そうなのでパス。 >>> un…
ABCプログラマのみなさん、こんにちは。ABCは文書化されていない仕様が多いことで有名ですけど、今日もひとつ新しい仕様を発見しました。 if式(?:演算子)が返す値の型は統一しないといけないみたいです。 ダメなやつ (if #t (f) 10) 自前の処理系であるHappy…
30分プログラム、その409。自動でビルドコマンドを選ぶスクリプトを書いてみた。 プロジェクトごとに使っているビルドコマンドが違うので、毎回makeを使うのか、antを使うのか、omakeを使うのか迷わないといけない。 これはあまりにも面倒なので、適切なビル…
http://happyabc.org Scheme-abc用のドメインをとったので、Hikiを置いてみた。でも、やっぱりデフォルトのテーマのままだとほかのWikiと区別がつきにくて嫌。 でも、tDiaryのテーマで気に入ったやつが見つけれなかったので、WordPressのテーマのReduxを移植…
Operaのお気に入りに javascript:window.location='http://b.hatena.ne.jp/entry/'+escape(location.href); を登録して、cというニックネームをつけておく。あとは、好きなページでアドレスバーにcを入れるだけで、はてブコメントが表示できるよ。# いい加減…
30分プログラム、その408。ファイルの各行ごとに特定のコマンドを実行するスクリプトを作ってみた。例えば、 foo bar bazみたいなテキストファイルがあった場合、 $ each-line rm -rf < dir.txtとすると、全部消せる。(もっとも、この場合はxargsで十分だけ…
30分プログラム、その407。Java言語で学ぶデザインパターン入門 マルチスレッド編のWorker ThreadパターンをErlangでやってみる。 Worker threadパターンは要するに、スレッドをいくつか作っておいて、それを使い回わすためのパターン。プロセス生成が軽いと…
30分プログラム、その406。Data.Graph.Inductive.Graphvizというおもしろそうなライブラリを見つけたので使ってみる。 要するにノードとエッジで構成された、いわゆるグラフ理論のほうのグラフを扱うためのライブラリらしい。ノードとエッジでグラフを作るの…
30分プログラム、その405。Pythonの文字列の%をScalaでもやってみる。Pythonの%はこんな感じで、要するにsprintf。 >>> "Hi, %s" % "mzp" 'Hi, mzp' >>> "The %s is %d." % ("answer",42) 'The answer is 42.' implicit conversionを使って、Stringにメソッ…
30分プログラム、その404。最近、Schemeのオブジェクトシステムに興味津々です。 というわけで、Gaucheのオブジェクトシステムを使ってリストを作ってみる。 使い方 ;; リストを作る gosh> (define xs (make <my-list> :head 1 :tail (make <my-list> :head 2))) ;; 表示 gosh></my-list></my-list>…
今、scheme-abcにはClojureに似たオブジェクトシステムが載っている。別にマネした訳じゃなくて、たまたま似ただけなんだけど。 ;; クラス定義 (define-class Foo Object ([f x] (print x))) ;; インスタンスの生成 (define foo (new Foo)) ;; メソッド呼び…
id:athos:20081028:p1 g:csnagoya-sicp:id:Gemma:20081029 g:csnagoya-sicp:id:Gemma:2008103030分プログラム、その403。なんとなくボクも参加しないといけない気がしたので、書いてみる。 げんまさんが無限ストリームで計算してたので、ボクはPythonのイテ…
30分プログラム、その402。日付を与えると曜日を返す関数を書いてみた。 本当はカレンダーを作るつもりだったけど、整形して表示する時間はなかった。 使い方 # 1970/1/1が基準 $ perl cal.pl 1970 1 1 Thu # 今日は水曜日 $ perl cal.pl 2008 10 29 Wed ソ…
Programming Flex 3: The Comprehensive Guide to Creating Rich Internet Applications with Adobe Flexの"Framework Fundamentals"を読んだので適当にまとめてみる。 そうか、FlexとFlashの違いはライブラリだったのか。
いままで色々がんばってきて、やっとSchemeからSwfに変換できるようになった。やった。 ;; swf.scm (define-class Hello flash.display.Sprite ((init) (let [(t (new flash.text.TextField))] (invoke t appendText "Hello,world!!") (invoke this addChild…
30分プログラム、その401。ErlangでJava言語で学ぶデザインパターン入門 マルチスレッド編に載ってるfutureパターンをやってみる。futureパターンはこんな感じで、別スレッドで値を計算させるやつ。 // 別スレッドで処理が走る Data data1 = host.request(10…
30分プログラム、その400。この前のocaml-nagoyaでid:syd_sydさんがFunDepの話をしていた。細かい話はついていけなかった。でも、例としてでてきたCollクラスがなかなか便利そうだった。 class Coll a b where empty :: b insert :: a -> b -> b instance Co…