             self = .Error(error)
         }
     }
-
+    
+    /**
+        Wraps value in Result
+    */
+    public static func pure(value: V) -> Result<V> {
+        return .Value(value)
+    }
+    
+    /**
+        Get unsafe execution back, in case if you want to use do ... catch after all
+    */
     public func value() throws -> V {
         switch self {
         case .Error(let error):

public enum Result<V> {
    case Error(ErrorType)
    case Value(V)

    public init(@noescape unsafe: () throws -> V) {
        do {
            self = .Value(try unsafe())

            }
        }
    }
    
    /**
        Apply function wrapped in Result to Result-vrapped value
    */
    public func apply<U>(transform: Result<V -> U>) -> Result<U> {
        switch self {
        case .Error(let error):
