Berp was written primarily for the reasons stated in the previous section. Therefore technical merit was less important when I started. However, there may just be some benefit in the approach I have taken. Here are some speculative reasons:
ContT, make it relatively easy to implement the effectful features of Python. This means that berp can translate Python constructs into high-level Haskell constructs. This made the compiler very easy to write, which in turn has allowed me to play with some fun extensions like tail call optimisation and first-class continuations (
callCC). The interaction of control flow operators in Python can get rather tricky, so it has been a great advantage to work with high-level Haskell code as output. Sometimes I think of berp as a very detailed study of the continuation monad.
eval()primitive which allows you to compile code from a string and load it into a running program. This might be possible in Haskell with dynamic linking, but it is likely to be tricky. It is quite likely that there will be features of Python than cannot reasonably be implemented in the approach taken by berp.
Last edited by bjpop,