If you haven't read about dogelang, you really
should. It is python with haskell-syntax where you can use all python modules.
So basically coffee-script but for a language that is already useful. And
python bytecode is emitted instead of first compiling to python itself, but
that just as a side-node.
On my behest, the developer of dg
added pattern matching so that in an
if-condition a tuple-unpacking-expression does not raise an exception if
the unpacking fails but returns false.
Therefore one can now implement their own zip and list-constructor in the
following manner:
zip = x' y' -> if
([x, *xs], [y, *ys] = x', y') =>
yield (x, y)
yield from $ zip xs ys
otherwise => yield from ()
list = x' -> if
([] = x') => []
([x, *xs] = x') => [x] + list xs
This looks almost like haskell's case-pattern-matching but not quite, so it is
sure to annoy every haskell-programmer.
You might need to execute python3 -m dg -b once after installing/updating dg
to rebuild the interpreter/compiler-bundle with this feature.
In other news: It is quite likely that I will hold a small talk about dogelang at Leipzig's
next Haskell conference HaL-10.