

Python 3 implementation in Haskell - marshallp
http://hackage.haskell.org/package/berp

======
sp332
Some discussion of implementation on github:
<https://github.com/bjpop/berp/wiki/Developing-Berp>

~~~
DasIch
Which shows that this implementation doesn't support imports, keyword
arguments, metaclasses, eval and variable scope annotations.

This might have been a nice exercise but it is completely unusable as a
serious implementation.

~~~
egonschiele
> Please note that Berp is currently in a very early stage of development.
> Many aspects of Python 3 are not yet implemented, and there are lots of
> rough edges to the code.

------
judofyr
See also: <http://news.ycombinator.com/item?id=1390889>

------
mulander

      CLPython (http://common-lisp.net/project/clpython/) is 
      an open-source implementation of Python written in 
      Common Lisp. 
      It bridges the Python and Lisp worlds, so you can:
       * access Python libraries from Lisp;
       * access Lisp libraries from Python.
    

Runs on 6 different CL implementations. Like Berp it can interpret and compile
if the underlying CL implementation supports compilation.

------
marcf
How fast is it?

~~~
wbhart
Mostly it doesn't actually work.

But the one trivial example I tried the berp interpreter was something like
1000 times slower than Python.

------
tresta
Hmmm... won't install with ghc 7.0.4:

    
    
      $ cabal install berp
      Resolving dependencies...
      cabal: dependencies conflict: ghc-7.0.4 requires containers ==0.4.0.0 however
      containers-0.4.0.0 was excluded because berp-0.0.2 requires containers <0.4

~~~
exDM69
This is pretty usual when it comes to major revision changes in the compiler
or standard library with many languages.

This is what you should do:

1\. checkout berp from GitHub

2\. try to build using cabal in the checked out source tree

3\. if there are failing dependencies, hack Cabal build files. this case is
probably trivial and berp developers have left containers < 0.4 without a good
reason (I may be wrong here, see what's changed in the "containers" package).

4\. go to step 2, repeat until software is built

5\. submit the change to github, file pull request

~~~
wbhart
After three hours of trying to install this with GHC 6.12.1 and GHC 7.0.3 I
have given up.

The problem isn't with berp .cabal files but with dependencies of berp.

ghc-7.0.3 requires containers ==0.4.0.0 language-python requires containers
==0.3.0.0

ghc-6.12.1 requires directory ==1.0.1.0 language-python requires directory
==1.0.1.2

Fetching and unpacking language-python and changing the dependencies manually
doesn't appear to fix the problem, for reasons I do not understand.

~~~
wbhart
There is a workaround for the issues with language-python. One can do:

cabal fetch language-python cabal unpack language-python edit the language-
python.cabal file updating the containers dependency to 0.4.0.0 then change
the version number of language-python itself to 0.3.3 cabal configure cabal
install

However, this will not fix the more obtuse problem:

Warning: This package indirectly depends on multiple versions of the same
package. This is highly likely to cause a compile failure. package
haskell98-1.1.0.1 requires process-1.0.1.5 package ghc-7.0.3 requires
process-1.0.1.5 package Cabal-1.10.1.0 requires process-1.0.1.5 package
berpinterpreter-0.0.3 requires process-1.0.1.5

I believe the only solution for this problem is to rebuild the entire Haskell
platform from source, and if that fails, to format and reload the entire
machine.

But you know, keep voting this thread up because Hackhell is awesome.

~~~
wbhart
I finally got it to build, after rebuilding most of Haskell.

It crashes on just about everything. Even a simple "for" loop defeats it. So
one has to replace all of those with while blocks.

Every single one of the Python benchmarks I have previously written fails with
a not implemented error.

On the one trivial example I timed which worked it was about 1000 times slower
than Python.

------
treeform
I wander if it adds any of Haskell's lazy and thread features?

~~~
treeform
To answer my own question it looks like it supports call/cc
[https://github.com/bjpop/berp/blob/master/test/regression/fe...](https://github.com/bjpop/berp/blob/master/test/regression/features/callCC/callCC_continuation_returned.py)

tail calls
[https://github.com/bjpop/berp/blob/master/test/regression/fe...](https://github.com/bjpop/berp/blob/master/test/regression/features/tail_call/tail_call_method.py)

So those features are cool at-least...

------
chbrosso
Last update was in May 2010...

~~~
treo
Last commit on August 04, 2011. <https://github.com/bjpop/berp>

~~~
wbhart
There is a commit to the new-identity branch on Oct 19th 2011.

------
flazzarino
but will it blend?

