     /// :return A new function that when called will invoked the passed function with the parameters specified.
     public class func bind<T, E>(function: (T...) -> E, _ parameters: T...) -> (() -> E) {
         return { () -> E in
-            typealias TType = (T...)
-            return function(unsafeBitCast(parameters, TType.self))
+            typealias Function = [T] -> E
+            let f = unsafeBitCast(function, Function.self)
+            return f(parameters)
         }
     }
     

    /// :return First element from the array.
    public class func partial<T, E> (function: (T...) -> E, _ parameters: T...) -> ((T...) -> E) {
        return { (params: T...) -> E in
            typealias TType = (T...)
            return function(unsafeBitCast(parameters + params, TType.self))
        }
    }
    

    public class func values<T, U>(dictionary: [T: U]) -> [U] {
        var result : [U] = []
        for (_, value) in dictionary {
            result.append(value)
        }
        return result
    }
