I honestly don't share the OP's hatred of Haskell syntax, nor do I find it categorically worse than lispish languages. It's entertaining that he's gone from capital letters to the sigils (":"). Both tend to be controversial and which is better is more a matter of personal taste than anything.
I agree with another commenter that the lack of pattern matching syntax is something of a deficiency, and I was also troubled over how I'd do this. A "plambda" operator is one possibility that I was considering, though it feels like it's a really hackey embedding of MLish in lispish:
(plambda fname
((pattern-1a pattern-1b ...) (stuff))
((pattern-2a pattern-2b ...) (stuff)))
Also, rather than a preprocessor I was thinking of implementing the whole thing in Template Haskell---not because it's easier, but really because I expect the opposite: I figured it'd be a good way to really bite off a big chunk of TH and get good at it.EDIT: It occurs to me that one could just use a variant on cond to implement pattern matching, e.g., "cond-argv":
(define (fname a b) (cond-argv
((a1 b1) (stuff))
((a2 b2) (stuff))))