Promote higher-order functions using defunctionalization
Support defunctionalization in singletons
Update .gitignore