         return success(result)
     }
 
-    let reverseTransformValue: [B] -> Result<[A], E> = { values in
+    let reverseTransformClosure: [B] -> Result<[A], E> = { values in
         var result = [A]()
         for element in values {
             switch valueTransformer.reverseTransformedValue(element) {

        }
    }

    let reverseTransformValue: B -> Result<A?, E> = { value in
        if value == defaultTransformedValue() {
            return success(nil)
        } else {

        }
    }

    return ValueTransformer(transformClosure: transformClosure, reverseTransformClosure: reverseTransformClosure)
}

public func lift<A, B, E>(valueTransformer: ValueTransformer<A, B, E>) -> ValueTransformer<[A], [B], E> {
    let transformClosure: [A] -> Result<[B], E> = { values in
        var result = [B]()
        for element in values {
            switch valueTransformer.transformedValue(element) {
