Factorでツイートする

連鎖性プログラム言語FactorでTwitterにポストできたのでメモ.

Factor?

どうやらFactorはすごくマイナーなようなのでまずは紹介です.

Factorという連鎖性言語があります.
http://factorcode.org
連鎖性言語というのは要するにForthやPostScriptのようなスタック型言語のようなプログラム言語のことを指します*1

FactorはREPLや高階関数,同図像性*2といったLispめいた性質に加え,HTTPサーバやWebフレームワーク,OpenGLGUIなどの組込みライブラリが非常に充実しているという特徴があります.

ちなみに,REPLで

(scratchpad) "demos" run

とするとFactorのデモ一覧が出ます.

本題

Factorの組込みライブラリはTwitterもサポートしているので,これを使います.
REPLで

(scratchpad) "twitter" about

とすると,twitterボキャブラリの詳細が表示されます.

twitterボキャブラリはTwitter APIへのアクセスにconsumer-keyとconsumer-secretを要求するので,http://dev.twitter.comであらかじめ入手しておきます.また,ツイートするためにwrite権限も設定しておきます.

以下はTwitterにOAuth認証してhelloとツイートするコードです.URLをブラウザで開くのにMac OS Xのopenコマンドを使っているので,OS Xでしか動きません.

REPL上でこのソースをロードして,authorizeを評価します.

(scratchpad) authorize

すると認証ページが表示されるので,認証してPINコードを取得します.その後,

(scratchpad) "取得したPINコード" set-access-token-with-verifier
(scratchpad) hello

とすると,helloとツイートされます.

*1:厳密には違う. http://oss.infoscience.co.jp/factor/concatenative.org/wiki/view/Concatenative%20language/index.html

*2:コードとデータが同じであるという性質.