2007-04-01から1ヶ月間の記事一覧

文字列間の距離

2つの文字列の距離を求める関数。挿入、入れ替え、削除のいずれかの操作を1回行うと距離が1増える。 import Control.Monad distance :: String -> String -> [Int] distance [] [] = return 0 distance xs [] = return $ length xs distance [] ys = return …

無限リスト

Scheme の call/cc を理解するために。Python の yield を真似してみる。こんなん。 def natural(): n=0 while 1: yield n n += 1 >>> a=natural() >>> a.next() 0 >>> a.next() 1 >>> a.next() 2 で、Scheme 版。 pos とか restart とかいうよくわからない…

ソート

なんか書けた。mergeSortはあやしい。 /* insertSort */ insert([],E,[E]). insert([X|XS],E,[X|RR]) :- E >= X, insert(XS,E,RR). insert(XS,E,[E|XS]). insertSort([],[]). insertSort([X],[X]). insertSort([X|XS],R) :- insertSort(XS,RR), insert(RR,X,…

OCaml本

とうとう出るそうです。みなさんお疲れさまでした。 特にOさんは執筆に力を注ぎながらも本業も疎かにせず、尊敬です。 将来はOさんのようなアクティブな大人になりたいものです。

Haskell と GUI と π

卒業研究に必要そうな基礎知識は、 単純な Haskell 力 GUI プログラミング力 π計算への理解 である。このへんをこそこそとやっていかねばなるまい。wxHaskell が使えるようになれば、Haskell 力と GUI プログラミング力は、きっとある程度は勝手につくだろう…

samegame

適当に、samegame の一部を書いた。Stateモナドの練習。所要時間は15分。昔に比べれば少しは成長したかな。 selectBall は、選んだ点に隣接する同じ色の点のリストを取り出す。インタフェースがダメすぎるけど…。 import Control.Monad.State data Color = R…

前に作った処理系に、if と嘘くさい = 演算子を追加した。問題は再帰的な関数定義ができない点。 ノリで Y コンビネータの定義を入力したら通ってしまったので、Y コンビネータで fact を書いてみた。動いた。まぐれくさい。 mins> (define Y (lambda (f) ((…

Lisp処理系

適当なLisp処理系(と言えるのか?)を作りました。半日で作った感じなので、細かいミスは仕方ない! import System.IO import Control.Monad import Text.ParserCombinators.Parsec data LispVal = Atom String | Boolean Bool | String String | Number Inte…