scarlet lambda (a web framework for heretics)

hello, world. meet scarlet.

(def main () ^"Hell yeah.")

Status, as of January 12 2007:

Much of what is described here is working today. However, it is in pieces, and some parts are not implemented at all. Expect a public beta by April 2007, with early-adopter downloads and source code control coming much sooner.

This project is not a toy, but intended for serious use in the real world. I run a business, and I use this codebase extensively in my work, so it's important to me that this project moves efficiently and the code be well tested and stable.

Eventually, I want to hire developers to help me work on the code. So it's also important to me that the code be well designed and well documented.

I hope you enjoy this sneak preview as I bring the code up to these standards.


Michal J Wallace

the framework: scarlet lambda

In ancient times, functional python programmers were shunned, and forced to wear the scarlet lambda as a symbol of their heresy...

Well okay, not really, but that's what I'm calling this thing: scarlet lambda, or scarlet for short.

Scarlet is a very lightweight framework built on top of wsgi:

And of course...

ecdysis: a lisp-like syntax for python

First rule of ecdysis: Stop whining. You don't have to use it.

Anything you can do in scarlet, you can do in plain python syntax. Think of ecdysis as a template system strong enough to write code in.



# return a string. (from main, this means "print") (def main () "hello world") # yield a string. (same effect) (def main () ^"hello world") # input comes from browser or command line (def main (name="world" [args] {kw}) ^"hello $name" ^"welcome to ecdysis.")

XML style:

<?xml version="1.0"?> <?def main (name="world" [uri_path] {query}) ?> <html> <head> <title>Hello $(name)</title> </head> <body> <h1>Hello $(name)</h1> <p>Welcome to ecdysis.</p> </body> </html>

future directions

I'm trying to stick to features I personally need for the initial release, and not just to do things just because they're cool. But some ideas are worth keeping, so here's the someday/maybe list:

stay tuned

If you would like to get involved in this project, please subscribe to my blog: