Perhaps also my effort which I like to pimp out on these threads occasionally: http://sediment.io
How are you meant to implement the reverse function without a helper function? I tried defining an anonymous lambda function in a let statement, but recursion isn't allowed it seems. And interesting project though! well done