Archive for December, 2004

大学の最終日

Posted by on Tuesday, 28 December, 2004
>本日16時をもって大学に入れなくなる。これから10日くらい、大学には入れない。 > >そういうわけで、昨晩は忘年会から研究室に戻って大学にずっといた。の、わりには何もやってない。 scim の SetupUI の挙動が不明すぎてはまってた。 > >帰り、汗くさくて不快だったので突発的に銭湯に行き、髪が伸びてたのと無精ヒゲもすごかったので床屋でばっさりとやってもらい、いろいろすっきりした。 >

SetupUI

Posted by on Monday, 27 December, 2004
>うーん GUI のところは書けたんだが、 socket 経由でリロードすると scim ごと落ちるのはなんでなんだろ……。 > >→なんか環境によっては落ちないらしい。なんでなんだー! > >もう一度設定ウィンドウを開くと、上げなおしてくれる模様。 >

fskkserv

Posted by on Monday, 27 December, 2004
>えーと昨日のリンクまちがってましたすいません。 > > >http://deisui.org/~ueno/caml/fskkserv/index.html.ja >です。 >

忘年会

Posted by on Monday, 27 December, 2004
>研究室で忘年会。いやちがう、研究室の、忘年会。 >

日本語 WikiName について

Posted by on Sunday, 26 December, 2004
>えーと、いろいろ整理して書いてみたのですが、無駄に長い気がしたのですっぱり消しました。 > >CamelCase でも長い名前がつけられるというのはその通りだと思いますし、簡潔さを旨とするとしても、システムの側で縛りつけることはできません(自分で書いててなんですが、ひらがなを抑制するというのはナンセンスだと思っています)。でも、なんとなくこの書き方だと、自然に簡潔になりがち、という方向性が提示できたらいいと思っていて、 BracketName はその抑制があまりにもなさすぎる気はしています。 > >また、鉤括弧は僕も最初思いつきましたが、二重ブラケットをそう変わらない気がして提示しませんでした。しかし、二重ブラケットはそれが見た目からは消えてしまうのに対し、鉤括弧では消えないという違いがあり、この差は大きいかもしれません。ただ僕の文章だとカッコは多くなりがちなようで(上の OCaml の話の中にも使っている)、『』あたりを使うのがいいかな、と思っています。日本語の書名は『』で囲うことが多いですが、本のタイトルくらいはページ名になってもよかろうという気がしますし。 > >長さについては……制限が面倒くさいので、とりあえずなしでもいいだろうというしかないかな、と。簡潔さを重視する場合、単純に文字数で上限を切ってしまってもいいように思います(20文字とか)。もっとも、これもカタカナ語の複合語があったりすると簡単に越えてしまうんですが……。 >

OCaml の話">OCaml の話

Posted by on Sunday, 26 December, 2004
> >fskkserv > というskkserv 実装が OCaml を使ってます(どっちみちすごいマイナーだなあ)。 > >たとえば Ruby だってそんなもの、というのは割合に同意するのですが、個人的には、 Ruby は portupgrade が非常に大きいと思います。 Python だったら portage ですか。そういう「大口の顧客」はないですね。あと Ruby には tDiary などが(日本では)よく知られていますし。 >

特捜戦隊デカレンジャー

Posted by on Sunday, 26 December, 2004
>年末の総集編エピソード。たいへん馬鹿馬鹿しくて良かった。個人的には「署を捨てよ、街へ出よう!作戦」でゲラゲラ笑った。署を捨てよって。 > >ナンセンスなオチもなかなか。横手美智子、いい仕事しています。 >

State モナド(4) 自分なりのまとめ

Posted by on Saturday, 25 December, 2004
>State モナドは、何らかの意味での「状態遷移」をまとめたもの。 DFA そのものというよりは、 DFA に入力記号列を喰わせたところというのに近い。ただし、それ自体は単なる定義であって、実際に遷移するわけではない。「ここからこういう遷移を辿る」という定義にすぎない。 > >さて、 State モナドの値を runState に適用すると関数が取り出される。この関数は、初期状態を受け取って、実際に状態遷移をし、その結果として得られる値と最終状態の対を返す。 > >『モナドのすべて』にあるように、上のレベルの状態遷移であれば、普通に transition を適用してタプルから取り出して、という連鎖を作っても大した手間じゃないと思うが、もっと複雑になった時にはきっと便利になるのだろー。 >

State モナド(3)

Posted by on Saturday, 25 December, 2004
> >承前 > > >というわけで、サンプルから値を取り出せたので、次は自分で書いて確かめましょうというわけで、やっぱりちょっと苦労しました。モナドの扱いにまだ慣れてない。 > >State モナドがどういうものか、いまひとつわかってないわけですが、状態つき計算といえば、まあとりあえず DFA でも書いてみようかね。というわけで。 > >import Control.Monad.State

data MyState = Q0 | Q1 | Q2 | Q3 | Q4 deriving Show
data MyInput = I0 | I1 deriving Show

transition :: MyState -> MyInput -> (Bool, MyState)
transition Q0 I0 = (True, Q0)
transition Q0 I1 = (False, Q1)
transition Q1 I0 = (False, Q2)
transition Q1 I1 = (False, Q3)
transition Q2 I0 = (False, Q4)
transition Q2 I1 = (True, Q0)
transition Q3 I0 = (False, Q1)
transition Q3 I1 = (False, Q2)
transition Q4 I0 = (False, Q3)
transition Q4 I1 = (False, Q4)

dfa :: Bool -> [MyInput] -> State MyState Bool
dfa b [] = return b
dfa _ (i:is) = do s <- get
(b', s') <- return $ transition s i
put s'
dfa b' is

numToInput :: Integral a => a -> [MyInput]
numToInput n = reverse $ toInputList n
where toInputList :: Integral a => a -> [MyInput]
toInputList 0 = [I0]
toInputList 1 = [I1]
toInputList n =
if rem n 2 == 1 then I1 : toInputList (n `div` 2)
else I0 : toInputList (n `div` 2)

checkDFA :: Integral a => a -> Bool
checkDFA n = let (b, _) = checkMain Q0 in b
where checkMain :: MyState -> (Bool, MyState)
checkMain = runState (do b <- dfa False $ numToInput n
return b) > >ちと長いのは transition などの関数があるため。この DFA は、 0 または 1 を入力列として受け取り、その入力列を2進数とみなしたときに5の倍数であれば真となる DFA です。 > >二進数のリストを作るのは面倒なので、実際には数値から変換してますが。 > >*Main> map checkDFA [1..15]
[False,False,False,False,True,False,False,False,False,True,False,False,False,False,True]
> >以上実行例。よしよし。ふむふむ。 >


ruby-1.8.2">ruby-1.8.2

Posted by on Saturday, 25 December, 2004
>リリースですよ奥さん。 >