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

舞波本

舞波本を買った。パラパラ見てみるとクゥ〜ンな AA が出てきてビビる。

ActiveSupport

今更ながら RoR を触ってみることに。ActiveSupport が変態的なメソッドを提供してくれるので楽しい。pluralize て。 irb(main):001:0> "person".pluralize => "people" irb(main):002:0> "sheep".pluralize => "sheep" irb(main):003:0> "mouse".pluralize …

xsnow

X を起動したら雪が降ってた。 Plamo のこういうところが好きだ。

ss

砂漠 : desert デザート : dessert

vim のカラースキームをはてなダイアリーで

vim のカラースキームを、はてなダイアリーのシンタックスハイライト用の CSS に変換する vim スクリプトを書いてみました。 fun! s:showHatenaCSS() let high_names = \ ["Normal","Special","Type","Comment","PreProc","Identifier","Constant","Statemen…

ローゼン…

関西でローゼンなしですか…。

IO モナドは難しい

ふつける p.108 に遅延評価の説明として myIf :: Bool -> a -> a -> a myIf True t e = t myIf False t e = e このように、if を関数で書いてみました。次のプログラムを使って動作を試しましょう。 main = do myIf (True) (putStrLn "then") (putStrLn "els…

正格性フラグ

import qualified Control.Exception as CE data Foo = Foo !Int -- 正格性フラグあり data Bar = Bar Int main = do "Foo" `test` case Foo (3 `div` 0) of Foo _ -> "ok" "Bar" `test` case Bar (3 `div` 0) of Bar _ -> "ok" "Foo2" `test` case Foo (3 `…

他にも

デフォルトで 2 種類のタグファイルを吐くのはどう考えてもおかしいと思う。

hasktags

Haskell 用のタグファイルを作ってくれる hasktags なるものが GHC についてるので試してみる。-R オプションが無いのがちょっと不便。vim でジャンプしようとすると、 E432: Tags file not sorted: tagsなんじゃこりゃー うう…投げやりな感じでソートするよ…

xjump

xjump で、 http://mmm.uec.ac.jp:8081/club/koken/~kudoh/soft/xjump.html の 強制終了すると、キーリピートがオフになる場合があります。このときは、% xset rとすればなおります。 これ知らなくて困ったのでメモ

Parsec

Parsec 便利だなー。楽だ。コンパイル時に -package parsec を忘れると意味不明のエラーが出るから忘れないようにしないと。

ふつける 10,11 章

久々にふつける。入門書を順番に読んでたのが昔の俺なんだよな。今の俺は先に unsafePerformIO なんかを見てしまうから困る。 というわけでふつける 10 章。 階層化ライブラリは面倒だなあ。Data.List て。Text.ParserCombinators.Parsrc はさすがに長い。 …

List.zip7

List.zip7 とか使ってる人いるの? あと Scheme の cddadr とか

unsafePerformIO

unsafePerformIO は型安全でないらしい。 test :: IORef [a] test = unsafePerformIO $ newIORef [] main = do writeIORef test [42] bang <- readIORef test print (bang :: [Char]) は SEGV る。test が多相型になっているため、[Int] を書き込むこともで…

oddな意味

辞書で oddly を引くと「奇数に」という意味があったが、どういう時に使うんだ?

ふつける 8,9 章

ふつける 8 章。 ラムダは \ 。これはちょっとなあ…。短すぎるというか、バックスラッシュは気持ち悪い。fn や fun ぐらいのほうが好きだなあ。でもJavaScript の function は長すぎる。OCaml にも function はあるけど、あれはあんまり使わないからいいんだ…

ソースコード色分け機能

はてなグループにはあったのだが、やっとついたのか。嬉しい。実装は Text::VimColor かな?

ふつける 7 章

ふつける 7 章 p.160 Haskell には一行コメントがある。OCaml にも欲しい。Camlp4 使ったらできるんだろうか…。マクロとかプリプロセッサとか使うとエディタの色分けがおかしくなるから嫌なんだよな。逆にエディタがマクロの定義を解釈して色分けしたらいい…

白アリ

黒歴史::アニメ Ali ProjectにおけるTVアニメ「CLAMP学園探偵団」OPの「Piany Pink」(ファンシーな楽曲・ボーカルで今のAli Projectの楽曲とは非常に異なる) ピアニィ・ピンクは黒歴史ですか、そうですか…。 っていうか白アリ自体黒歴史?うーん。

ふつける 6 章

ふつける 6 章 p.128。基本的な値とかリテラルとか。まずは Bool 型。代表的な関数として、not と (&&) と (||) がある。これはどれも同じ名前で OCaml にもある。(&&) や (||) は関数なのに右辺が評価されたりされなかったりしてずるい。(||) と全く同じこ…

遅延評価

ふつけるの 5 章。遅延評価。 遅延評価かあ。慣れてなかったらどう評価されるのかまるでわからない。むしろわからないからいいのかもしれない。それが宣言的に書けるっていうことか。多分違う。 前に Packrat Parsing を Ruby で書いてみたけど、遅延評価を…

ふつける 4 章

ふつけるの 4 章。echo コマンド。 import System main = do args <- getArgs putStrLn $ unwords argsimport は open みたいなものか。getArgs はコマンドライン引数を得るアクション。これがアクションになっているのは面白い。OCaml で書くと open Sys le…

ふつける 2,3 章

ふつけるの p.44 head コマンドから。 main = do cs <- getContents putStr $ firstNLines 10 cs firstNLines n cs = unlines $ take n $ lines cslines 関数で文字列を改行で区切ってリストを作って、take 関数で最初の10要素を取る。そして、unlines 関数…

Hello, World!

Haskell の利点とかインストールはさくっと読み飛ばして p.17 の Hello,World! 。 main = putStrLn "Hello, World!"ghc でコンパイル。うん、ちゃんと動く。OCamlで書くと let _ = print_endline "Hello, World!"だな。 ここで 1 章が終わって 2 章へ。UNIX …

Haskell

Haskell の Parsec が何をやってるのか知りたいので Haskell を勉強。前に買って放置していたふつけるを読むことにする。一週間くらいでざっと読めたらイイナ。

%記法

Rubyの%記法は便利だ。正規表現に/を含めたいときとかはこれが無いとやってられない。 これは %r<\d{4}/\d{2}>というふうに使うわけだけど、%rの次の記号(上の例では<>)は何が使えるのだろうか。 マニュアルには 改行を含めた任意の非英数字を使うことができ…

ledit

OCamlの対話環境でヒストリー機能とか色々使いたくなったのでleditを入れる。 ledit-1.11.tar.gz を落としてmake…すればいいはずなのだが、 $ make camlp4r pa_extend.cmo q_MLast.cmo pa_local.ml -o pa_local.ppo File "pa_local.ml", line 34, characters…

ややこしい名前

$ google-count -q のだめ{カンター,カウンター,カレンダー}{ビレ,ビル,ピレ,ピル} google-count 4360000 のだめカンタービレ 539 のだめカンタービル 577 のだめカンターピレ 6 のだめカンターピル 109 のだめカウンタービレ 3 のだめカウンタービル 0 のだ…

Obj

Objヤバイ # type foo = { count : int };; type foo = { count : int; } # let x = { count = 4 };; val x : foo = {count = 4} # Obj.set_field (Obj.repr x) 0 (Obj.repr 8);; - : unit = () # x;; - : foo = {count = 8}うぎゃ。Obj.set_field (Obj.repr…