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

radikoスケジューラー

聴きたいradikoの番組を聴き逃さないために、時間になったら自動的に番組を再生してくれるプログラムを作ってみました。再生にはブラウザを使用するので、Schemeで番組表APIを叩いて検索、番組データをJSON化してブラウザに渡す、という流れになります。ブラ…

今、日本でお気に入りされているYoutube動画

を一覧できるスクリプトを書いてみました。 jYoulike ダウンロード Twitterの検索APIを用いて、Youtubeのお気に入りボタンと連携して投稿されたツイートを検索し、サムネイル化します。サムネイルをクリックするとインラインで動画が開きます。常に最新の、…

Scheme で定数定義

define がそろそろ長くて面倒になってきたので (遅いですか?)、こういうマクロを作ってみました。 (define-syntax set (syntax-rules () ((set id x) (define id x))))これならタイプするのも簡単です。Racket であれば (define-syntax set (make-rename-tr…

Scheme から Racket へ

ユーザーなのに気づくのが遅れたんですが、PLT Scheme の名称が Racket に変更されるそうです。http://racket-lang.org/new-name.html http://news.ycombinator.com/item?id=1221374メーリングリストで時々 Racket という単語を見かけてはいたんですが、特に…

MPEG-4、ツリー探索、autovivification

近ごろ動画や音声データの読み書きを Scheme でしているんですが、MPEG-4 の処理が個人的にかなり楽しかったので少し書きます。MPEG-4 のデータはこのようなツリー構造になっており、お馴染みのツリー探索のテクニックが活躍しそうな雰囲気です。 (define st…

多値アクセス構文

ML(やHaskell)のプログラマがタプルを使うような文脈でSchemerは多値を使うと思うんですが、値が一つだけ欲しいという場合に多値はちょっと不便なんですよね。MLだとfstやsndというアクセサが使えるんですが、それに相当するものが無いなと思って、作ってみ…

PLT SchemeのREPLで直前の値を参照できるようにする

CLの処理系にも似たようなのがあると思いますが、HaskellのGHCiで、直前に評価された値にitでアクセスできるというのがあったので、真似してみました。 #lang scheme/base (provide it) (define it~ '()) (define eval~ (current-eval)) (define-syntax it (…

Clojure風の無名関数構文

Arcには角括弧で無名関数を作る構文があります。例: > (map [if _ (+ 1 _) 1] '(1 -1 nil)) (2 0 1)便利そうなのでマクロで模倣して喜んでいたんですが、1引数の関数しか作れないのが不便に感じることもありました。で、最近Clojureにはその多変数版みたいな…

環境を汚さないrequire

トップレベルで作業をする時に、どうしてもライブラリを利用したくなりますが、その時にrequireで幾つもロードしていると、何となくREPLを汚してしまってるような気分になります。実際それで困ることはまず無いんですが、たまに基本構文のセマンティクスが変…