http://hackage.haskell.org/package/slot-lambda

It lets your write lambdas with 'slots' without inventing names for the parameters.
[s| ı + ı |]  =  \x y -> x+y

The unicode character ı(305) representing a 'slot' can be input in vim with the digraph 'i.' .
Use _ı to refer to the immediate left ı, and _0, _1, _2, ... to refer to the 1st, 2nd, 3rd, ... arguments respectively.
e.g.
[s| ı : ı : _ı : ı : _ı : _ı : _0 : [] |] 'a' 'b' 'c' = (\x y z -> x:y:y:z:z:z:x:[]) 'a' 'b' 'c' = "abbccca"
I originally intended using '_' to represent the 'slots' but that doesn't parse as legal haskell.
Actually I wonder how to achieve that without rolling my own haskell parser or forking haskell-src-exts.