[Haskell-cafe] Re: SoC project: Python-Haskell bridge - request
dons at galois.com
Thu Mar 27 14:30:05 EDT 2008
Remember that there are two proposals here, one potentially to the
Python team, one to the Haskell team . Of course the Haskell guys are
strongly interested in the use case Dan describes -- mitigating risk by
using Haskell for small components first, as part of larger legacy
The Python guys are more interested in Python use from Haskell, by the
looks of it.
> I notice that you omit from the advantages of calling Haskell from
> Python what I consider the most important reason of all (at least from
> the Haskell community side).
> The choice of programming language (at least at the top level) is
> primarily a political or managerial choice, not a technical one. Python
> is not merely a "terrific glue language", it is often the "blessed"
> language, and currently the language of choice in some industries,
> including my own. This is not just "glue code" either: one in-house
> application has about 100,000 lines of Python code (calling a comparable
> amount of C++ code)!
> Any hope of introducing Haskell into this realm requires a way to work
> Haskell in slowly and from the bottom. As such I view your proposed
> project as quite valuable, a robust and easy-to-use Python-Haskell
> bridge (Python on top) being essential to growing the presence of
> Haskell in non-academic circles.
> Of course, it may be for this very political reason that you have
> omitted the above from your list, in which case I completely understand. :)
> Michał Janeczek wrote:
> >This is my second take on the project proposal.
> >I have expanded on a few points, and hopefully
> >also clarified a little bit.
> >Please comment :)
> >Python-Haskell bridge
> >This project will seek to provide a comprehensive, high level (and thus
> >easy to use) binding between Haskell and Python programming languages.
> >This will allow using libraries of either side from each language.
> >If we decide to support function callbacks, these two functionalities
> >(embedding Haskell in Python, and vice versa) become interrelated.
> >In this light, it makes sense to implement them in the scope of the
> >same project.
> >Advantages of calling Haskell from Python
> >* Robust components
> > It might be beneficial to implement safety-critical componenets
> > in a strongly, statically typed language. Since Python itself is
> > a terrific "glue language", such components would usually be purely
> > functional, leaving IO to the Python side.
> > Embedding Haskell code in this way is of particular interest when
> > there already is a large existing Python infrastructure. One can
> > implement new functionality in a form of Haskell plugin/component,
> > even if complete rewrite is not feasible.
> >* Performance improvements for speed-critical code
> > Haskell compiled to native code is typically an order of magnitude
> > faster than Python. Aside from that, advanced language features
> > (such as multicore parallel runtime, very lightweight threads
> > and software transactional memory) further serve to improve the
> > performance. Haskell could become a safe, high level alternative
> > to commonly used C extensions.
> >* Access to sophisticated libraries
> > While its set of libraries is not as comprehensive as that of
> > Python, Haskell can still offer some well tested, efficient
> > libraries. Some of the examples might be:
> > * rich parser combinator libraries (like Parsec)
> > * persistent, functional data structures (i.e. Data.Map,
> > Data.IntMap, Data.Sequence, Data.ByteString)
> > * QuickCheck testing library to drive analysis of Python code
> >Advantages of calling Python from Haskell
> >* Python as a scripting language for Haskell applications
> > Python is widely considered to be more approachable for regular
> > users. As such, it could be used as a configuration/extension
> > language for applications that benefit from extra flexibility.
> > One example of such application is xmonad window manager.
> >* Access to a large number of libraries
> > As a much more popular language, Python has built up an impressive
> > suite of libraries. There already are Haskell projects which rely
> > on Python code to implement missing functionality, for example
> > a paste bin application hpaste, which uses Pygments syntax coloring
> > library.
> >* A low level library to access and manage Python objects from Haskell
> >* Library support for wrapping Haskell values in Python objects. This
> > is necessary to allow function callbacks. In addition, thanks to that
> > feature large and/or lazy data structures can be efficiently passed
> > from Haskell to Python
> >* A set of low level functions to convert built-in data types between
> > Haskell and Python (strings, numbers, lists, dictionaries,
> > generators etc.)
> >* A high level wrapper library for Haskell that simplifies embedding
> > and calling Python code
> >* A set of functions, and possibly a tool, to wrap up monomorphic
> > functions and expose them to Python through foreign export facility
> >* A way (an external tool, or a Template Haskell macro) to easily
> > derive conversion functions for user-defined data types/objects
> >* Documentation and a set of examples for all of above
> >Optional goals
> >In order of increasing amount of work and decreasing priority:
> >* Exporting a wider class of functions to Python
> >* A Python module that inspects a compiled Haskell module and
> > transparently exposes functions within. This might be possible
> > thanks to GHC API
> >Haskell-Cafe mailing list
> >Haskell-Cafe at haskell.org
> Haskell-Cafe mailing list
> Haskell-Cafe at haskell.org
More information about the Haskell-Cafe