2006-05-01から1ヶ月間の記事一覧

メモ

削除

Clean Parser

//モナドパーサで括弧 nestingM = (open &> nestingM (\x -> nestingM (max (x+1) y) )) yield 0 //Start = parse nestingM ['()'] "" "" //ints = (number` \i -> number` \j -> number (i,j,k,i*j*k)) //モナドパーサで足し算 ints = number \i -> symbol …

liner logic

についてお勉強しようとこの人のページにいった http://homepages.inf.ed.ac.uk/wadler/なんかdivとps形式だったのでtex関連のソフトをインストールする必要にせまられた。 cygwinsetupで簡単にptexがインストールできるアドレス 以下をsetupを起動したとき…

数字変換

//digit は型エラーでだめだった natural :: Parser Char Int a natural = ( (number)) ~temp) id) natural //ちゃんとマイナスがつく Start = parse integer ['-132423'] "" ""

括弧の照合テスト 3

foldparens f e = p where p = (open &> p p yield e

括弧の照合テスト 2

nesting = (open &> nesting nesting max (x+1) y) yield 0 Start = parse nesting ['(()(()))'] "" ""

括弧の照合テスト

Tree = Nil | Bin (Tree,Tree) open = symbol '(' close = symbol ')' parens = (open &> parens parens yield Nil

Clean Paser

ヘッダファイルの循環参照

ではまってしまった…

SOE本

高階型のところをよんでみる。 関手やfmap、Monad、StateMonad,IOMonadの話がでてくる。 昨日聞いたmzeroやMonadPlusの話が出てきたの復習にちょうどいい。

HaskellとClean

HaskellにはrunStateと言う関数があるCleanにはstartIOという関数がある どちらも合成された関数に対して実行させるために存在する。

モナドについて

IOモナドやStateモナドに関しては、評価順序を決定するため関数合成を行うための枠組み。 何でこんなことをするかと言うと、Haskellは遅延評価のため評価順序がわかりにくい。 SchemeやLispで言うとletの入れ子が連続しているのに近い。

確率

http://www.tom.sfc.keio.ac.jp/~sakai/d/tb.rb/20060519 なんというか答えそのまんまですね。 引っ掛けがあると思ったのに…

ブログペット

つけてみたけどエキセントリックなことしかいいません。

来週あたり

SICP読書会かな? まだ告知とかないけど

Clean 遅延評価が(ちょっと)便利なとき

ListLS ( map (\ (label,x) -> ButtonControl (toString $ label) [ControlPos (LeftTop ,OffsetVector {vx=x*bw,vy=0})] ) (zip2 labels [0..]) ) 無限リストを引数に取れるのでzip関数と組み合わせてこんな感じで、画面がつくれたりする。 だからどうした…

Sum

http://sicp.g.hatena.ne.jp/hyuki/20060521 を読んで浮かんだ解をCleanで書いてみる Start = sumCol [ [1,2,3],[4,5,6],[7,8,9] ] sumCol xss = map sum (map (\ n -> (map (index n) xss)) (indexList xss) ) where index n xs = (flip (!!) n) xs われな…

更新する場合

以下が動かない do c hoge" writeFile "hoge" (proc c) 以下が正しい main = do h hoge" seq (length s) $ writeFile "hoge" (proc s) System.IO.Unsafe UnsafePerformIO DebugTrace Iconv Debug.Trace trace :: String -> a -> a trace string expr = unsaf…

Query モナド

モナドでかくとSQL do e phatntom typedo v

Dependent Type

ある値を持つ型

MonadPlus

>>=が乗法 mplusが加法 returnが単位元1concatMap リストMonadの法則 return x = [x] m (>==) f = concatMap f m mzero = [] mplus = (++) Monadの便利関数 guard :: (MonadPlus m) g) => Bool -> m () guard True = return () guard False = mzero sequence…

RHG

本日はRHGのHaskell読書会にきています。Haskellでのmainの型はIO型と決まってるそうです。 評価用にseqと言う関数があるそうです。いま、Maybe型に付いてその有難味を教示されています。

参考資料

RHGページ http://pub.cozmixng.org/~the-rwiki/rw-cgi.rb?cmd=view;name=RHG%C6%C9%BD%F1%B2%F1%3A%3A%C5%EC%B5%FE+Revolution%3A%3A%A4%D5%A4%C4%A4%A6%A4%CEHaskell%A5%D7%A5%ED%A5%B0%A5%E9%A5%DF%A5%F3%A5%B0 今回説明で使われた資料 http://www.city5.…

Clean IO

OffsetVector を使うには Idを取得しなければならないようだ…

Clean IO

Start w = startIO SDI Void ini [ProcessClose closeProcess] w Windowsアプリをつくるときはっていう風にProcessAttribute で ProcessCloseを指定してあげないと閉じないみたい

この日記はhatena-modeで書いてます

ずっとcurlの事を言語ことだと思っていました… あと hatena-curl-commandを"curl.exe"にしないと動かなかった… Emacsで書けると何かと便利使い勝手はhowmに近い感じ

このまえの土曜TLUGのmeatingに行きました。 飲み会だけ。 この日は雨のためか人すくなく9人だけでした。 場所はいつものビルのつぼ八でした。久しぶりなので緊張しました。 このmeatingは日本人より外国人の方が圧倒的に多いのです。 アメリカ、ドイツ、オ…

48時間でかくScheme 本当に二日でかけた48時間かかってない。 ちなみにcall/ccは実装してない。 http://halogen.note.amherst.edu/~jdtang/scheme_in_48/tutorial/overview.html

CleanのGenericについて、

CleanのGenericは型に対する汎用的な関数を定義するための枠組みです。 代数的な型にたいして一度定義した関数を自動的に生成することができます。 なんでGenericが必要なのか たとえば自分で定義した代数型に対して何度も同じような関数を定義するのは面倒…

Cleanで

http://sky.zero.ad.jp/~zaa54437/programming/clean/LanguageReport21/Chap7.html Functorは、種*->*の型構成子用の写像関数を提供している(6.4も参照)。 class Functor f where fmap :: (a -> b) (f a) -> (f b) instance Functor List where fmap :: (a…