2006/1/10, [EMAIL PROTECTED] <[EMAIL PROTECTED]>:
> It seems using types to enforce the policy that a data base handle
> cannot ever `leak' out might be a better idea, in Haskell. It is quite
> straight-forward to do so: cf. the design of the ST monad guarantees
> that an STRef cannot `leak' out in the result of runST. Monadic
> Regions (implemented in Haskell) generalize the idea to multiple
> nested regions: a pointer (or any other resource, e.g., a database
> cursor) allocated in one region can be used in nested regions but
> cannot leak outside of the region that created it (Or, to be more
> precise, cannot be used outside -- and so, can be safely deallocated
> when the region is exited).

This might be a good idea.

> Incidentally, the difficulty with finalizers was precisely the
> argument for using enumerators rather than cursors in database
> APIs. Takusen has implemented that idea; takusen currently supports
> Sqlite, PostgreSQL and Oracle, has a test suite. Its performance test
> shows that takusen can retrieve 2 million rows from a table without
> running out of memory.

Can you explain how do you manage the lifetime of handles in Takusen?
It isn't clear to me where are the advantages of enumerators.

Krasimir
_______________________________________________
Haskell mailing list
Haskell@haskell.org
http://www.haskell.org/mailman/listinfo/haskell

Reply via email to