On Thu, Jan 15, 2009 at 09:17:55AM -0700, John A. De Goes wrote: > On Jan 10, 2009, at 4:11 PM, Donn Cave wrote: >> Maybe I haven't been paying enough attention, but I see Python and >> Haskell in about the same position on this, especially in light of >> how different they are (Haskell's FFI is a lot easier!) Plenty of >> Python software depends on C library modules and foreign code. The >> particular examples you mention - DB and UI - are great examples >> where it's sort of crazy to do otherwise for just the reasons you >> go on to list. > > Python has pure interfaces to all the major databases. While it's true > there are no "native" GUI libraries, there are pure Python libraries for > just about everything else. Haskell is not yet to this point.
By "pure" do you mean "containing python code only"? I'm looking through a few, and: PostgreSQL - psycopg - C PostgreSQL - pgsql - C PostgreSQL - pygresql - C MySQL - mysqldb - C MS SQL Server - pymssql - C And any interface that uses ODBC will, by necessity, be calling to C, because ODBC is defined as a C API and not a network protocol. Where are all these pure-Python drivers? > I don't think it's a bold assertion. If I'm using a Haskell library that > wraps a C library, and find a bug in it, my chances of tracking down the > bug in C code and submitting a patch to whatever group maintains it are > exactly zero. On the other hand, if it's a pure Haskell library, I'll at Why? > least take a look. What would you do? You have to balance that against the chances of there being bugs in code that is used by far fewer people. I don't care what language you're talking about -- I'm going to expect the C PostgreSQL library to be less buggy than a pure reimplementation in any other language, and will have less concern about its maintenance and stability in the future. It's a lot of wheel reinvention to try to re-implement a database protocol in n languages instead of do it in 1 and bind to it everywhere else. AFAIK, the only language where that sort of wheel reinvention is popular is Java. But then Java seems to encourage wheel reinvention anyhow ;-) -- John _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe