2001-12-30
λ. 読書
- 『X - 七曜の章』
- 友谷蒼[著] 安部恒[イラスト] CLAMP[原作]
- 『キノの旅 - the Beautiful World』
- 『キノの旅Ⅱ - the Beautiful World』
- 時雨沢恵一[著] 黒星紅白[イラスト]
2002-12-30
λ. 購入物等
- 『2003 Year Calendar』
- サイ ヨシユキ, いろは楓, Wednesday, 青いかりんとう, チエコ, 今野 隼史 [画]
- 『felica. - BITTERSWEET FOOLS ReCOLLECTION BOOK -』
- JEWELBOX, LAMPBOX [著]
- 『かわいいのすき。』
- みさくらなんこつハースニール
- 『コメボン』
- RiceCandy
- 『銀茄子畑 Ver.1.00』
- 銀茄子園
- 『東方妖々夢 体験版Plus』
- 上海アリス幻樂団
- 東方妖々夢げっぇ〜っと!!。> 萩野服部研の諸氏
『蓬莱人形』も欲しかったのですが、こっちは売り切れてしまっていました。 残念。 - 『Tetramorph - 0 -』
- 藍羽 優希 [画]
- 『VAMP FESTA MANIFEST !!』
- 温風 流音 [画]
- 『華』
- 薬用植物園 (南戸 まあ)
- 『A Paradisiac island 』
- 海老名 総一, 猫井ミィ, てくてく, Azasuke, ひつき, 千家 カゲロー, TAMA, 大嶋 亮, 雨宮 えびす丸, 井上 新太郎, 時雨 [画]
- ラーメン本
- サークル不詳。
λ. Ruby-CPL (仮称)
R-NATのサブルールにはR-NAT-VとR-NAT-Fがあるのだけど、とりあえずR-NAT-Vに限定して実装してみた。これで例えば「prl(zero,succ.pi2).cons.pair(!,cons.pair(!,cons.pair(!,nil))) ⇒ succ.succ.succ.zero」が実行できるようになる。
ただ、R-NAT-Vはnatural transformationのdomainが定義しようとしているオブジェクトそのものの場合にしか使えないので、これだけではやっぱり弱すぎる。例えば、prodやinflistに関する計算は出来ても、expやdyn'に関する計算は実行できない。
λ. 配列の長さを無視してアクセスしているようにしか思えんのだが……
Cでは、末尾のメンバに可変長配列を持つような構造体を扱う際の常套手段ですよん。
ψ うぃすてりあ [> 東方妖々夢げっぇ〜っと!!。> 萩野服部研の諸氏 神降臨!]
ψ うぃすてりあ [> 配列の長さを無視してアクセスしているようにしか思えんのだが…… うむ、俺も数ヶ月前に嵌ったな、これ。 所詮、Cに..]
ψ jn [http://www.asahi-net.or.jp/~wg5k-ickw/html/online/gcc-2.8...]
ψ さかい [gccには色々な拡張機能があって面白いですよね。 ちなみにC99ではサイズを省略する事が出来るようになってたりします..]
ψ 石川 [またよりにもよって誤解を招くような書き方を。。 臨戦体制ってそんなにテンパってましたか、私?^^; 相田さんの同人..]
ψ さかい [臨戦「体制」って今のアメリカみたいな感じ? とかぼけてみよう。 # 別にテンパってはいなかったと思いますよー > ..]
2005-12-30
λ. 冬コミ
冬コミに行ってきた。 けど、出発したのが遅かったので、到着したときには「東方文花帖」も平均律の新刊も売り切れていましたとさ。しょぼーん。
購入物いろいろ
- 「東方兎月狂」
- うみねこ亭
- 「神巫 -ICHIKO-」
- {SIV,はるのひと}@WAVEDRIVE
- 「synchrotone (シンプルトーン)」
- 村田連爾@PASTA'S ESTAB
- 「Toluene」
- 「a001」
- TOMA@tomatika
- 「ハッピー★スーサイズ (Happy Suicides)」
- Zazie@SELFISH GENE
- 「SHOJOK@KEI VOLUME5」
- inkey@少女架刑
- 「MitsumenoNayami」
- こうずかゆうき@ユキネコブランド
- 「KIRAN's Material」
- 騎羅@ぱぴくりあ
- 「Scarlet」
- Shin "JASON" Nagasawa @BoleRO + 安倍吉俊,加茂,ワダアルコ
- 「MONSTER SHOW-CASE ― THE FANTASY EXPOSITION 2ND」
- 氷堂れん@DOLL'S PLANET
- 「After all, to the Far, Farside records」
- 理間高広@Strangeness
2007-12-30
λ. HaskellでCYK法
文脈自由文法のパーサーの最も効率の良いアルゴリズムの一つとしてCYK法(CYK algorithm)があるのだけど、これまでどういうアルゴリズムか知らなかったので、ちょっと調べてHaskellで素朴に書いてみた。 手続き型言語で書くとテーブルをボトムアップに作る手順が肝になるが、Haskellだと順序を気にせず再帰的にテーブルを定義するだけで良い。
import Data.Array type S = N type N = Int data Prod t = T t | !N :++ !N type Rules t = Array N [Prod t] type Table = Array Int (Array Int (Array N Bool)) parse :: Eq t => Rules t -> S -> [t] -> Bool parse rules s xs = table ! 0 ! (n-1) ! s where n = length xs table = mkTable rules (listArray (0, n-1) xs) mkTable :: Eq t => Rules t -> Array Int t -> Table mkTable rules ary = seq rules $ table where table = mkA lb ub $ \i -> mkA i ub $ \j -> flip fmap rules $ \ps -> or $ do p <- ps case p of T t -> [i==j && t==ary!i] n1 :++ n2 -> [lookup i k n1 && lookup (k+1) j n2 | k <- [i..j-1]] (lb, ub) = bounds ary lookup i j n = table ! i ! j ! n mkA i j f = listArray (i,j) [f x | x <- range (i,j)]
で、適当な例で試す。
plus = 0 mult = 1 lpar = 2 rpar = 3 expr = 4 factor = 5 plus_expr = 6 mult_factor = 7 expr_rpar = 8 rules :: Rules String rules = array (0, 8) [ (expr, num ++ [lpar :++ expr_rpar, factor :++ mult_factor, expr :++ plus_expr]) , (factor, num ++ [lpar :++ expr_rpar, factor :++ mult_factor]) , (plus_expr, [plus :++ expr]) , (mult_factor, [mult :++ factor]) , (expr_rpar, [expr :++ rpar]) , (plus, [T "+"]) , (mult, [T "*"]) , (lpar, [T "("]) , (rpar, [T ")"]) ] where num = [T (show i) | i <- [0..10]] test = parse rules expr ["1", "*", "(", "2", "+", "3", ")"]