2005-09-01から1ヶ月間の記事一覧

Concurrent Clean - 欲しい機能

WideChar WideString iconv 連想配列(Dictionary) エスケープのない文字列

pp4d - インデントによるブロック

[id:lethevert:20050915:p4] インデントによるブロックをどのように書けば解析しやすいかを考えていたところ、下のような構造体を考えれば、よいのではないかと思った。 ::ReadBuffer = { lineNo :: Int , line :: [Char] , indent :: Int , symbol :: [[Cha…

引数の名前付け

Cleanでプログラミングをしていると、引数が非常に多くなってしまうことがある。 そのような時は、このように書くと吉かもしれない。 ただし、ある程度、アルゴリズムが固まってきたら、関数の構造そのものを見直すことは必要だが。 # (procs, intf, impl, s…

pp4d - PreProcessor for Delphi

[id:lethevert:20050915:p4] 「インデントによるブロック」と「セミコロンの省略」を実装してみました。 (こちらにアップしました。 -> http://www.geocities.jp/lethevert/softwares/pp4d/index.html) こんなソースを用意すると unit Sample interface us…

pp4d

次は、インターフェース部の自動生成に取り組む予定。

MMVC

[id:lethevert:20050905:p5] - SmalltalkのMVC [id:lethevert:20050913:p4] - MMVC [id:lethevert:20050914:p1] - ドメインモデル貧血症 - 気のせいか、僕が、MMVCを見つけてリンクを張ってから、他のブログでもMMVCについてコメントしている記事を見かけた…

Delphi用プリプロセッサ pp4d の仕様

[id:lethevert:20050913:p8]の続き pp4dの構文 -> [id:lethevert:20050926:p1] 仕様 開発言語には、いま流行り(?)のCleanを使うということで。 通常のpascal(delphi)ソースコードに埋め込む形で記述。 インターフェース部を自動生成 インデントによるブロッ…

ここの検索ボックス、面白い

http://chasen.org/~taku/blog/ はてなにもほしいな。

O/Rマッピング

http://www.atmarkit.co.jp/fjava/rensai3/ormap01/ormap01.html こういうツールもあるらしい。O/Rマッピングに相当する処理はいつも手書きで、似たような処理が多いから自動化できそうだと思っていたけど。 でも、こういう動的な方法よりも、ソースコードを…

ドメインモデル貧血症

MMVC([id:lethevert:20050913:p4])に関連して http://capsctrl.que.jp/kdmsnr/wiki/bliki/?AnemicDomainModel ここでは、アプリケーションモデルとドメインモデルをどのように使い分けるかが、反例的に書かれている。 アプリケーション層(サービス層のこと)…

monadとリストの内包表記

http://www.hyuki.com/haskell/20041224094008 リストの内包表記はmonadの一種だということ

HaskellDB

http://haskelldb.sourceforge.net/ [id:tanakh:20050908:p1] http://page.freett.com/shelarcy/diary_2005-09.html#between_ghc6_4_1_and_ghc_6_4 Haskellで、コンビネータを使ってSQLを書くらしい。 [id:lethevert:20050803:p1]でCωのSQLについて書いてい…

syntax比較

http://namazu.org/~satoru/blog/archives/000043.html http://merd.sourceforge.net/pixel/language-study/syntax-across-languages/BagAndLst.html

MMVC

[id:lethevert:20050905:p5]の続き http://c2.com/cgi/wiki?ModelModelViewController 最近のSmalltalkでは、MVCではなく、進化したMMVCが使われているとのこと。 http://www.sra.co.jp/people/nisinaka/Jun4Java/MVC/ モデルをデータのみから成るドメインモ…

単体テスト xSpec

http://log.giantech.jp/211 TDDのxUnitはテストというよりも仕様書と呼ぶ方が意図に近いという話。 関連)[id:lethevert:20050720:p1] - Design by Contract

Konfabulator

http://www.wikiroom.com/windows/index.php?Konfabulator http://hogehoge.plala.jp/pub/lab/konfabulator/ なんか、すごそう。 MacのDashboardは、これのパクリだとかいう噂(Apple社は否定)

オラクルがシーベルを買収

http://www.businessweek.com/technology/content/sep2005/tc20050912_9586_tc119.htm シーベルは、CRMソフトの最大手です。オラクルは、シーベルの買収の後は、最近買収した企業と製品の統合に力を入れるようです。

(か、どうかは分からないけど)ドロー&エディタソフト

http://tdpblog.blogzine.jp/twilightdraw/ Mac用なので使えないが、これは便利そうな気がする。

Delphi用のプリプロセッサ

Delphiでコードを書くことがだんだん苦痛になってきて(*1)、なんかいいプリプロセッサはないかなと思っているのですが、あんまりないなぁ。人が作ったプリプロセッサで満足できる保証もないので、自分で作るということもありです。 しかし、プリプロセッサが…

Concurrent Clean IDE

IDEは、ホイール対応していないんだよな。

Concurrent Clean : 遅延評価

静的なデータなら、コンストラクタにデータの生成規則を定義しておくだけで、後は遅延評価がよろしくやってくれる。

Concurrent Clean

クロージャからの連想 <- [id:lethevert:20050813:p2] searchChar :: Char String searchChar c str = searchChar` c 0 (size str) str where searchChar` c pos len str | pos >= len = -1 | str.[pos] == c = pos | otherwise = searchChar` c (pos+1) len…

Concurrent Clean の型付け

Cleanでちょっと複雑なプログラムを書いていて気づいたのだけれど、型に対する扱いが、CやJavaやDelphiなどとは違うことを改めて感じた。いや、以前から知識としては知っていたのだけれど、実際にコードを書いて、コンパイラから文句を言われると、初めは戸…

Concurrent Clean

複雑なデータ構造を扱うアルゴリズムを、DelphiとJavaで実装することを前提に、あれこれとやっていたのだけれど、頭が混乱しまくっていたので、Cleanで書いてから翻訳してみようと思ってやり始めたら、うそみたいにさくさく書けるんですけど。

Concurrent Clean : Parser Combinator

ちょっと分かってきた module paren import StdEnv import Parsers Start # res = parse wholeparse ['()((()*1'] "" "" = case res of Succ r = hd r Err a b pos = abort (foldl printPos "error" pos) with printPos s (At pos) = s +++ " at " +++ (toSt…

Concurrent Clean : Parser Combinator

http://sky.zero.ad.jp/~zaa54437/programming/clean/CleanBook/part2/Chap5.html ここに書いてあることと、ライブラリの内容が違うんですが・・・

Concurrent Clean とインターフェース

[id:lethevert:20050907:p1] 一意性の問題は、以下のようにして解決しました。 //** 型クラス = インターフェース の定義 **/ class FileIO a where save :: *File a -> *File IFileIO = E.a: { val :: a , save :: *File -> *(a -> *File) } castFileIO :: …

Concurrent Clean と 多態性

[id:lethevert:20050906:p1] 昨日のポイントは、 リストは単一の型しか受け取ることができないことと、 # f = foldl save f lst のsaveが、型クラスで多重定義されているので、そのどれを使うのかがコンパイル時点で決められなければいけないということだと…

Concurrent Clean と 多態性

先日から、かなりあれこれと試行錯誤をしてみたのですが、結局Cleanのシステムでは、型クラスを用いて多態性を実現することは不可能であるようだという結論に至りました。動作したのは、ラッパー型を作成した場合ですが、これは汎用性の面で欠けるし、それ以…

memoizeと不動点の追記

[id:lethevert:20050904:p3] Concurrent Clean版の fix :: ( (Int -> Int) -> (Int -> Int) ) -> (Int -> Int) fix maker = f where f = maker f と、JavaScript, Scheme版のそれ function fix(G) { function f(x) { return f(x) } f = G(f) return f } (def…