Giter VIP home page Giter VIP logo

result's People

Contributors

aksswami avatar basthomas avatar bencochran avatar bwhiteley avatar dileping avatar gfontenot avatar giginet avatar gkaimakas avatar ikesyo avatar inamiy avatar ishkawa avatar jarsen avatar javisoto avatar jpsim avatar jspahrsummers avatar klaaspieter avatar kylef avatar mdiep avatar nachosoto avatar natestedman avatar neilpa avatar nekrich avatar norio-nomura avatar phimage avatar ratkins avatar rnapier avatar robrix avatar ryanmasondavies avatar thomvis avatar valeriyvan avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

result's Issues

Carthage build fails

I'm trying to install ReactiveCocoa through Carthage with no success, I've come to the conclusion that the problem is in building Result framework, so I tried with this cartfile:

github "antitypical/Result" == 0.4.2

This is what I do:

MacBook-Pro-de-Ricardo-2:RACTest Ricardo$ carthage update
*** Fetching Result
*** Fetching Box
*** Downloading Box at "1.2.2"
*** Checking out Result at "0.4.2"
*** xcodebuild output can be found in /var/folders/7g/3ysplhns0mndfwr4h535nfr00000gn/T/carthage-xcodebuild.mordHg.log
*** Building scheme "Result-iOS" in Result.xcworkspace
A shell task failed with exit code 65:
** BUILD FAILED **


The following build commands failed:
    CompileC /Users/Ricardo/Library/Developer/Xcode/DerivedData/Result-hktjintpcyyecvfaasfnmpejpkph/Build/Intermediates/Box.build/Release-iphoneos/Box-iOS.build/Objects-normal/armv7/Box_vers.o /Users/Ricardo/Library/Developer/Xcode/DerivedData/Result-hktjintpcyyecvfaasfnmpejpkph/Build/Intermediates/Box.build/Release-iphoneos/Box-iOS.build/DerivedSources/Box_vers.c normal armv7 c com.apple.compilers.llvm.clang.1_0.compiler
    CompileC /Users/Ricardo/Library/Developer/Xcode/DerivedData/Result-hktjintpcyyecvfaasfnmpejpkph/Build/Intermediates/Box.build/Release-iphoneos/Box-iOS.build/Objects-normal/arm64/Box_vers.o /Users/Ricardo/Library/Developer/Xcode/DerivedData/Result-hktjintpcyyecvfaasfnmpejpkph/Build/Intermediates/Box.build/Release-iphoneos/Box-iOS.build/DerivedSources/Box_vers.c normal arm64 c com.apple.compilers.llvm.clang.1_0.compiler
(2 failures)

And this is the log: https://gist.github.com/Odrakir/9f36dd16d7872bdb9c15

I've been searching around and I did everything I found as a possible solution: Deleting carthage cache, deleting Simulators, reinstalling Xcode... nothing seems to work

Remove `try`

Now that Cocoa APIs map to throws we should be able to remove these and rely entirely on materialize.

Conveniences ought to have a home

We’ve had a few PRs along the lines of #123, where someone has submitted a scratch for a not-uncommon itch. We’ve been turning them down—mostly—thus far, but maybe we should instead be finding them a better home.

As I understand it, this is the sort of thing that git’s contrib dir exists to enable. Maybe we should consider something similar. Some ideas:

  • a Contrib (sub?)framework encapsulating conveniences and experiments
  • a section of the readme linking to gists with these things
  • just including them in the framework and being done with it

Avoid code signing for iphonesimulator sdk

In PR #78 code signing was added for all SDK. The introduces the problem that in CI (like Travis) using Carthage 0.9.x, where code signing is not required for iphonesimulator, result build is skipped.

You can check an example build of a test project that uses Result here

1.0 milestone

I feel like we're waffling around a bit, and it'd be great to push a 1.0 release soon. Given that we have a brief window of Swift source stability before it breaks again, seems like we might want to do that sooner rather than later. Are there specific things that we want to have in place before cutting a 1.0 release?

Guidelines for releases

There are a number of people with commit access to this repo now. Especially now that we're at 1.0 it seems like it'd be good to have some sort of guidelines around releasing, versioning, etc. Is there a good standard for this? Is there something we can steal from another project?

cc @antitypical/result

Restore Box.framework as a dependency

Result as a struct is awkward to use and having a public Box that isn’t a separate dependency will only lead to ambiguities.

So per discussion in that PR, we’ll restore Box to Box.framework and Result will be an enum once more.

Using Result with Alamofire

Hi,

I just wanted to include Result in my project and am running across a few issues. It seems to me as if Alamofire (which is already a dependency) defines its own Result type throwing problems when trying to write functions that return results.

For example Xcode (7.0 beta 5) tells me that I can't write Result<MyDataType, MyErrorType> because Generic type 'Result' specialized with too many type parameters (got 2, but expected 1). I'm basing my usage of Result on this.

Both are linked as frameworks installed via Carthage in a Swift 2.0 project.

I'm guessing issues like this shouldn't actually be occurring, but I'm doing something wrong here. Any pointers would be great, thank you!

Overloading the >>- operation to do both map and flatMap

I don't think theres a reason why only flatMap should be tied to the >>- operator. I think it's pretty clear that if you use the operator you want to map/flatMap depending on what you are returning from your function. I find it unlikely that someone would consciously want to map to Result<Result<T, ErrorTpe>,ErrorType> just like its probably an error if you map to Optional<Optional<T>> and you probably wanted to use flatMap. For extreme cases, they can just type the function name.

Carthage build failure

Create a cartfile like

github "antitypical/Result" ~> 0.1

Using carthage 0.6.4, run

carthage bootstrap --platform iOS

You'll get

*** Building scheme "Box-iOS" in Box.xcodeproj
*** Building scheme "Prelude-iOS" in Prelude.xcodeproj
*** Building scheme "Either-iOS" in Either.xcworkspace
*** Building scheme "Result-iOS" in Result.xcworkspace
** BUILD FAILED **


The following build commands failed:
    Check dependencies
(1 failure)

There are a couple issues in the log file. It seems to be building the Mac versions of the frameworks as well as the iOS versions, despite telling Carthage the platform. As for the build failing, the last message of the log is

=== BUILD TARGET Prelude-Mac OF PROJECT Prelude WITH CONFIGURATION Release ===

Check dependencies
CodeSign error: code signing is required for product type 'Framework' in SDK 'iOS 8.3'

Type alias result without committing to an error type

I would like to do something in the lines of the following:
typealias OperationResult = Result and just have any ErrorType as the error type.
But as it is now I have to declare a concrete ErrorType Result<valuetype, NSError>
Which means I can't use the feature of swift where every enum can just be an ErrorType. I have to use NSError only. Any workarounds?

Rename Result module name to handle namecollisions better

Name Result is very common in different libraries (e.g. old BrightFuture had its own result, Alamofire has Result, my own code had Result enum). It would make it easier to handle name collision if the name of the Result module would be different. Due to implicit namespace importing, Swift 2 compiler gets confused of the following

     import Alamofire // implicitly exposes Result enum (Alamofire.Result)
     import Result // implicitly exposes Result enum (Result.Result)

     func foo() -> Result.Result<NSData, NSError> { ... } // compiler thinks the Result before dot refers to implictly exposed enums, not to the module

Build failure

I am getting a build error when installing Result via Carthage (Xcode 6.3b4 for swift 1.2).

➜ carhage update --platform iOS
*** Fetching Result
*** Fetching Either
*** Fetching Box
*** Fetching Prelude
*** Checking out Box at "18d05a56845837eea90a36854c67de2520983bf8"
*** Checking out Result at "fdb2f9b7023647db606879119b09f4c732214592"
*** Checking out Prelude at "180e9ae5e60ec47abd8f3e0fa68cafbbbd160abe"
*** Checking out Either at "026d3471bca7c9573fdec46bab3d8f265d2ec001"
*** xcodebuild output can be found in /var/folders/80/316467jj2czbnz4cmvt0nw800000gn/T/carthage-xcodebuild.rOohbK.log
*** Building scheme "Box-iOS" in Box.xcodeproj
*** Building scheme "Prelude-iOS" in Prelude.xcodeproj
*** Building scheme "Either-iOS" in Either.xcworkspace
** BUILD FAILED **


The following build commands failed:
    Check dependencies
(1 failure)

Running carthage build --no-skip-current yields

➜ carthage build --no-skip-current
*** xcodebuild output can be found in /var/folders/80/316467jj2czbnz4cmvt0nw800000gn/T/carthage-xcodebuild.1WaA9F.log
*** Building scheme "Result-iOS" in Result.xcworkspace
** BUILD FAILED **


The following build commands failed:
    CompileSwift normal x86_64 /Users/aschuch/Downloads/Result-master/Result/Result.swift
    CompileSwiftSources normal x86_64 com.apple.xcode.tools.swift.compiler
(2 failures)

Push 0.4.2 to CocoaPods

As a follow up to #41, it would be great if you could push 0.4.2 to CocoaPods. The latest version there currently is 0.4.

Thanks!

Box dependency should be frozen

In version 0.4.4 thisgithub "robrix/Box" should be changed to github "robrix/Box" ~> 1.2.2. Because if not proyects including result (using Swift 1.2) should explicity add Box to their Cartfile because the latest version of box is not compatible with Swift 1.2

carthage update fails

My Cartfile contains only:
github "ReactiveCocoa/ReactiveCocoa" "swift2"

Running cartage update results in this error:
Failed to discover shared schemes in project Result.xcodeproj—either the project does not have any shared schemes, or xcodebuild never returned

If you believe this to be a project configuration error, please file an issue with the maintainers at https://github.com/antitypical/Result/issues/new

Running carthage update --platform iOS avoids the problem, so I suspect there might be something in a non-iOS target of Result's Xcode project that's causing a problem.

I'm using:
Xcode 7 (7A218), and xcode-select is also configured to use those command-line tools
carthage version 0.9.1

My Cartfile.resolved contains:
github "antitypical/Result" "0.6.0-beta.3"
github "ReactiveCocoa/ReactiveCocoa" "50af8fec8d1825d65c81f13efee3bbfb808a1242"

Tests depend on Prelude

It looks like 1756b77 intended to remove the dependency on Prelude, but the tests still import it and use unit() in ResultTests.testInitOptionalSuccess()

Add `recover` and `recoverWith`

Would you be open to adding recover and recoverWith to Result. They're similar to map and flatMap except that they are given closures that run when the Result failed and then provide an opportunity to make it succeed. The implementation of recover would actually be identical to the ?? operation.

If you are favorable of this change, I'd like to make a PR.

For more context, see Thomvis/BrightFutures#49, where we're discussing to replace a custom Result implementation with this library and identify the functions discussed here as the biggest missing piece.

The naming comes from Scala (http://www.scala-lang.org/api/2.10.1/index.html#scala.concurrent.Future), at least that's where I got it from.

Cannot build Result 0.4.5 with Carthage 0.9.3 and XCode 6.4

I was trying to work on proyects that require XCode 6.4 and when executing carthage update --platform ios I get the following error with result.

carthage update --platform ios
*** Cloning ReactiveCocoa
*** Cloning Result
*** Cloning Box
*** Checking out Result at "0.4.5"
*** Downloading Box.framework binary at "1.2.2"
*** Downloading ReactiveCocoa.framework binary at "v3.0"
*** xcodebuild output can be found in /var/folders/gf/dslbq4t94zg44sz7wnk2lg2r0000gp/T/carthage-xcodebuild.YvCHnr.log
A shell task failed with exit code 66:
xcodebuild: error: Scheme Result-watchOS is not currently configured for the build action.

Cartfile

github "ReactiveCocoa/ReactiveCocoa" ~> 3.0.0

Cartfile.resolved

github "robrix/Box" "1.2.2"
github "antitypical/Result" "0.4.5"
github "ReactiveCocoa/ReactiveCocoa" "v3.0.0"

Is this a Result issue or a Carthage issue?

Carthage update fails

I tried to install Result using the following Cartfile:

github "antitypical/Result" ~> 0.2

The result is the following output:

$ carthage update
*** Fetching Result
*** Fetching Either
*** Fetching Box
*** Fetching Prelude
*** Checking out Box at "18d05a56845837eea90a36854c67de2520983bf8"
*** Checking out Result at "0.2"
*** Checking out Prelude at "180e9ae5e60ec47abd8f3e0fa68cafbbbd160abe"
*** Checking out Either at "026d3471bca7c9573fdec46bab3d8f265d2ec001"
*** xcodebuild output can be found in /var/folders/p2/v0630kzj4lb8v65d325zn5vh0000gn/T/carthage-xcodebuild.SE01YO.log
*** Building scheme "Box-iOS" in Box.xcodeproj
objc[36929]: Class XCBuildConfiguration is implemented in both /Applications/Xcode.app/Contents/PlugIns/Xcode3Core.ideplugin/Contents/Frameworks/DevToolsCore.framework/Versions/A/DevToolsCore and /Users/jhack/Library/Application Support/Developer/Shared/Xcode/Plug-ins/Peckham.xcplugin/Contents/Frameworks/MHImportBuster.framework/Versions/A/MHImportBuster. One of the two will be used. Which one is undefined.
2015-04-27 16:09:22.961 xcodebuild[36929:1141196] [MT] iPhoneSimulator: SimVerifier returned: Error Domain=NSPOSIXErrorDomain Code=53 "Simulator verification failed." UserInfo=0x7f87ba392f20 {NSLocalizedFailureReason=A connection to the simulator verification service could not be established., NSLocalizedRecoverySuggestion=Ensure that Xcode.app is installed on a volume with ownership enabled., NSLocalizedDescription=Simulator verification failed.}
** BUILD FAILED **


The following build commands failed:
    CompileC /Users/jhack/Library/Developer/Xcode/DerivedData/Box-dhuserewjevjzmhhrmurzekzdvvl/Build/Intermediates/Box.build/Release-iphoneos/Box-iOS.build/Objects-normal/armv7/Box_vers.o /Users/jhack/Library/Developer/Xcode/DerivedData/Box-dhuserewjevjzmhhrmurzekzdvvl/Build/Intermediates/Box.build/Release-iphoneos/Box-iOS.build/DerivedSources/Box_vers.c normal armv7 c com.apple.compilers.llvm.clang.1_0.compiler
    CompileC /Users/jhack/Library/Developer/Xcode/DerivedData/Box-dhuserewjevjzmhhrmurzekzdvvl/Build/Intermediates/Box.build/Release-iphoneos/Box-iOS.build/Objects-normal/arm64/Box_vers.o /Users/jhack/Library/Developer/Xcode/DerivedData/Box-dhuserewjevjzmhhrmurzekzdvvl/Build/Intermediates/Box.build/Release-iphoneos/Box-iOS.build/DerivedSources/Box_vers.c normal arm64 c com.apple.compilers.llvm.clang.1_0.compiler
(2 failures)

where "/var/folders/p2/v0630kzj4lb8v65d325zn5vh0000gn/T/carthage-xcodebuild.SE01YO.log" contains

Build settings from command line:
    SDKROOT = iphonesimulator8.3

=== BUILD TARGET Box-iOS OF PROJECT Box WITH CONFIGURATION Release ===

Check dependencies

CompileC /Users/jhack/Library/Developer/Xcode/DerivedData/Box-dhuserewjevjzmhhrmurzekzdvvl/Build/Intermediates/Box.build/Release-iphoneos/Box-iOS.build/Objects-normal/armv7/Box_vers.o /Users/jhack/Library/Developer/Xcode/DerivedData/Box-dhuserewjevjzmhhrmurzekzdvvl/Build/Intermediates/Box.build/Release-iphoneos/Box-iOS.build/DerivedSources/Box_vers.c normal armv7 c com.apple.compilers.llvm.clang.1_0.compiler
    cd /Users/jhack/workspace/uPen/Carthage/Checkouts/Box
    export LANG=en_US.US-ASCII
    export PATH="/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin:(null)/Users/jhack/.gem/ruby/2.0.0(null):(null)/Library/Ruby/Gems/2.0.0(null):(null)/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/gems/2.0.0(null):/Applications/Xcode.app/Contents/Developer/usr/bin:/usr/local/Cellar/sonar-runner/2.4/libexec/bin:/usr/local/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin"
    /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -x c -arch armv7 -fmessage-length=0 -fdiagnostics-show-note-include-stack -fmacro-backtrace-limit=0 -std=gnu99 -fmodules -fmodules-cache-path=/Users/jhack/Library/Developer/Xcode/DerivedData/ModuleCache -fmodules-prune-interval=86400 -fmodules-prune-after=345600 -fbuild-session-file=/Users/jhack/Library/Developer/Xcode/DerivedData/ModuleCache/Session.modulevalidation -fmodules-validate-once-per-build-session -Wnon-modular-include-in-framework-module -Werror=non-modular-include-in-framework-module -Xclang -fmodule-implementation-of -Xclang Box -fapplication-extension -Wno-trigraphs -fpascal-strings -Os -Wno-missing-field-initializers -Wno-missing-prototypes -Werror=return-type -Wunreachable-code -Werror=deprecated-objc-isa-usage -Werror=objc-root-class -Wno-missing-braces -Wparentheses -Wswitch -Wunused-function -Wno-unused-label -Wno-unused-parameter -Wunused-variable -Wunused-value -Wempty-body -Wconditional-uninitialized -Wno-unknown-pragmas -Wno-shadow -Wno-four-char-constants -Wno-conversion -Wconstant-conversion -Wint-conversion -Wbool-conversion -Wenum-conversion -Wshorten-64-to-32 -Wpointer-sign -Wno-newline-eof -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator8.3.sdk -fexceptions -fstrict-aliasing -Wdeprecated-declarations -g -Wno-sign-conversion -mios-simulator-version-min=8.0 -iquote /Users/jhack/Library/Developer/Xcode/DerivedData/Box-dhuserewjevjzmhhrmurzekzdvvl/Build/Intermediates/Box.build/Release-iphoneos/Box-iOS.build/Box-generated-files.hmap -I/Users/jhack/Library/Developer/Xcode/DerivedData/Box-dhuserewjevjzmhhrmurzekzdvvl/Build/Intermediates/Box.build/Release-iphoneos/Box-iOS.build/Box-own-target-headers.hmap -I/Users/jhack/Library/Developer/Xcode/DerivedData/Box-dhuserewjevjzmhhrmurzekzdvvl/Build/Intermediates/Box.build/Release-iphoneos/Box-iOS.build/Box-all-non-framework-target-headers.hmap -ivfsoverlay /Users/jhack/Library/Developer/Xcode/DerivedData/Box-dhuserewjevjzmhhrmurzekzdvvl/Build/Intermediates/Box.build/all-product-headers.yaml -iquote /Users/jhack/Library/Developer/Xcode/DerivedData/Box-dhuserewjevjzmhhrmurzekzdvvl/Build/Intermediates/Box.build/Release-iphoneos/Box-iOS.build/Box-project-headers.hmap -I/Users/jhack/Library/Developer/Xcode/DerivedData/Box-dhuserewjevjzmhhrmurzekzdvvl/Build/Products/Release-iphoneos/include -I/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include -I/Users/jhack/Library/Developer/Xcode/DerivedData/Box-dhuserewjevjzmhhrmurzekzdvvl/Build/Intermediates/Box.build/Release-iphoneos/Box-iOS.build/DerivedSources/armv7 -I/Users/jhack/Library/Developer/Xcode/DerivedData/Box-dhuserewjevjzmhhrmurzekzdvvl/Build/Intermediates/Box.build/Release-iphoneos/Box-iOS.build/DerivedSources -F/Users/jhack/Library/Developer/Xcode/DerivedData/Box-dhuserewjevjzmhhrmurzekzdvvl/Build/Products/Release-iphoneos -MMD -MT dependencies -MF /Users/jhack/Library/Developer/Xcode/DerivedData/Box-dhuserewjevjzmhhrmurzekzdvvl/Build/Intermediates/Box.build/Release-iphoneos/Box-iOS.build/Objects-normal/armv7/Box_vers.d --serialize-diagnostics /Users/jhack/Library/Developer/Xcode/DerivedData/Box-dhuserewjevjzmhhrmurzekzdvvl/Build/Intermediates/Box.build/Release-iphoneos/Box-iOS.build/Objects-normal/armv7/Box_vers.dia -c /Users/jhack/Library/Developer/Xcode/DerivedData/Box-dhuserewjevjzmhhrmurzekzdvvl/Build/Intermediates/Box.build/Release-iphoneos/Box-iOS.build/DerivedSources/Box_vers.c -o /Users/jhack/Library/Developer/Xcode/DerivedData/Box-dhuserewjevjzmhhrmurzekzdvvl/Build/Intermediates/Box.build/Release-iphoneos/Box-iOS.build/Objects-normal/armv7/Box_vers.o
clang: error: invalid architecture 'arm' for deployment target '-mios-simulator-version-min=8.0'

CompileC /Users/jhack/Library/Developer/Xcode/DerivedData/Box-dhuserewjevjzmhhrmurzekzdvvl/Build/Intermediates/Box.build/Release-iphoneos/Box-iOS.build/Objects-normal/arm64/Box_vers.o /Users/jhack/Library/Developer/Xcode/DerivedData/Box-dhuserewjevjzmhhrmurzekzdvvl/Build/Intermediates/Box.build/Release-iphoneos/Box-iOS.build/DerivedSources/Box_vers.c normal arm64 c com.apple.compilers.llvm.clang.1_0.compiler
    cd /Users/jhack/workspace/uPen/Carthage/Checkouts/Box
    export LANG=en_US.US-ASCII
    export PATH="/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin:(null)/Users/jhack/.gem/ruby/2.0.0(null):(null)/Library/Ruby/Gems/2.0.0(null):(null)/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/gems/2.0.0(null):/Applications/Xcode.app/Contents/Developer/usr/bin:/usr/local/Cellar/sonar-runner/2.4/libexec/bin:/usr/local/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin"
    /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -x c -arch arm64 -fmessage-length=0 -fdiagnostics-show-note-include-stack -fmacro-backtrace-limit=0 -std=gnu99 -fmodules -fmodules-cache-path=/Users/jhack/Library/Developer/Xcode/DerivedData/ModuleCache -fmodules-prune-interval=86400 -fmodules-prune-after=345600 -fbuild-session-file=/Users/jhack/Library/Developer/Xcode/DerivedData/ModuleCache/Session.modulevalidation -fmodules-validate-once-per-build-session -Wnon-modular-include-in-framework-module -Werror=non-modular-include-in-framework-module -Xclang -fmodule-implementation-of -Xclang Box -fapplication-extension -Wno-trigraphs -fpascal-strings -Os -Wno-missing-field-initializers -Wno-missing-prototypes -Werror=return-type -Wunreachable-code -Werror=deprecated-objc-isa-usage -Werror=objc-root-class -Wno-missing-braces -Wparentheses -Wswitch -Wunused-function -Wno-unused-label -Wno-unused-parameter -Wunused-variable -Wunused-value -Wempty-body -Wconditional-uninitialized -Wno-unknown-pragmas -Wno-shadow -Wno-four-char-constants -Wno-conversion -Wconstant-conversion -Wint-conversion -Wbool-conversion -Wenum-conversion -Wshorten-64-to-32 -Wpointer-sign -Wno-newline-eof -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator8.3.sdk -fexceptions -fstrict-aliasing -Wdeprecated-declarations -g -Wno-sign-conversion -mios-simulator-version-min=8.0 -iquote /Users/jhack/Library/Developer/Xcode/DerivedData/Box-dhuserewjevjzmhhrmurzekzdvvl/Build/Intermediates/Box.build/Release-iphoneos/Box-iOS.build/Box-generated-files.hmap -I/Users/jhack/Library/Developer/Xcode/DerivedData/Box-dhuserewjevjzmhhrmurzekzdvvl/Build/Intermediates/Box.build/Release-iphoneos/Box-iOS.build/Box-own-target-headers.hmap -I/Users/jhack/Library/Developer/Xcode/DerivedData/Box-dhuserewjevjzmhhrmurzekzdvvl/Build/Intermediates/Box.build/Release-iphoneos/Box-iOS.build/Box-all-non-framework-target-headers.hmap -ivfsoverlay /Users/jhack/Library/Developer/Xcode/DerivedData/Box-dhuserewjevjzmhhrmurzekzdvvl/Build/Intermediates/Box.build/all-product-headers.yaml -iquote /Users/jhack/Library/Developer/Xcode/DerivedData/Box-dhuserewjevjzmhhrmurzekzdvvl/Build/Intermediates/Box.build/Release-iphoneos/Box-iOS.build/Box-project-headers.hmap -I/Users/jhack/Library/Developer/Xcode/DerivedData/Box-dhuserewjevjzmhhrmurzekzdvvl/Build/Products/Release-iphoneos/include -I/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include -I/Users/jhack/Library/Developer/Xcode/DerivedData/Box-dhuserewjevjzmhhrmurzekzdvvl/Build/Intermediates/Box.build/Release-iphoneos/Box-iOS.build/DerivedSources/arm64 -I/Users/jhack/Library/Developer/Xcode/DerivedData/Box-dhuserewjevjzmhhrmurzekzdvvl/Build/Intermediates/Box.build/Release-iphoneos/Box-iOS.build/DerivedSources -F/Users/jhack/Library/Developer/Xcode/DerivedData/Box-dhuserewjevjzmhhrmurzekzdvvl/Build/Products/Release-iphoneos -MMD -MT dependencies -MF /Users/jhack/Library/Developer/Xcode/DerivedData/Box-dhuserewjevjzmhhrmurzekzdvvl/Build/Intermediates/Box.build/Release-iphoneos/Box-iOS.build/Objects-normal/arm64/Box_vers.d --serialize-diagnostics /Users/jhack/Library/Developer/Xcode/DerivedData/Box-dhuserewjevjzmhhrmurzekzdvvl/Build/Intermediates/Box.build/Release-iphoneos/Box-iOS.build/Objects-normal/arm64/Box_vers.dia -c /Users/jhack/Library/Developer/Xcode/DerivedData/Box-dhuserewjevjzmhhrmurzekzdvvl/Build/Intermediates/Box.build/Release-iphoneos/Box-iOS.build/DerivedSources/Box_vers.c -o /Users/jhack/Library/Developer/Xcode/DerivedData/Box-dhuserewjevjzmhhrmurzekzdvvl/Build/Intermediates/Box.build/Release-iphoneos/Box-iOS.build/Objects-normal/arm64/Box_vers.o
clang: error: invalid architecture 'aarch64' for deployment target '-mios-simulator-version-min=8.0'

This happens on Mac OS X 10.10.3 (14D136), Xcode 6.3.1 (6D1002) (=> Swift 1.2).

Proposal: remove Either dependency

It's indisputable that Result is a kind of Either, but every added dependency is an additional burden for consumers, who I'm not convinced will use the EitherType functionality directly.

Furthermore, the Either README even suggests that its functionality can be trivially added as an extension upon a pre-existing Result type. To me, this means that consumers should not be required to build and link Either just to use a standardized Result type.

c.f. the conversation from #reactivecocoa

/cc @NachoSoto @saniul @tony

Failed to install via Carthage

My Cartfile

github "ReactiveCocoa/ReactiveCocoa" "v3.0-RC.1"

Unfortunately, carthage update gives this output:

$ carthage update
*** Fetching ReactiveCocoa
*** Fetching Result
*** Fetching Box
*** Checking out Result at "0.4.4"
*** Downloading Box at "1.2.2"
*** Downloading ReactiveCocoa at "v3.0 Release Candidate 1"
*** xcodebuild output can be found in /var/folders/jk/0zp2_vl57vz661xk_hm5klxr0000gp/T/carthage-xcodebuild.qWDqGQ.log
Failed to discover shared schemes in project Result.xcodeproj—either the project does not have any shared schemes, or xcodebuild never returned

If you believe this to be a project configuration error, please file an issue with the maintainers at https://github.com/antitypical/Result/issues/new

xcodebuild log is empty.
P.S. It's unclear who is to blame but let's start investigation from here. Can you please help me?

how to handle Result<nil, nil> ?

How to handle the use case when both result value and error are nil... For example when querying db yielding no result, it is not an error but we have nothing to return either. I know we can return an empty array to work around this issue, but seems like there should be a more elegant and clean solution...??

Could 'Error' generic parameter be removed?

Hi,

I was planning to use Result for my internal framework that access to a remote API and defines model types with convenience functions to access that API. (e.g: user.fetchFriends()).
This would give something like that: User.fetchFriends() -> API.fetchFriends() -> Alamofire.request(.GET, ...) -> NSURLSession...

However, the Error generic parameter requires to define a specific ErrorType for the Result objects. In my case, an API call could result into several kinds of error:

  • The request was cancelled or timed out (NSError)
  • HTTP error (4xx or 5xx) (Could be NSError or could be an enum in my API class for standard HTTP errors)
  • JSON validation error (could be an ErrorType enum defined in my User class for instance)

My point is, I will have errors returned by NSURLSession (cancelled, no internet connection, ...), my API class (http error), my model classes (JSON Validation, form validation, ...) and they won't be of the same kind (type). All these errors will be of ErrorType, but they won't share the same type.

To be able to use Result<T>, I would have to add an "underlying error" mechanism that would wrap the error coming from the previous step (e.g. APIError would wrap NSError objects returned by NSURLSession and then User.Error would have a case like case API(error: APIError) to wrap api errors, and so on).

I can understand that Result<T, Error: ErrorType> will force some kind of automatic documentation about the kind of error returned, but this is restrictive as well. Result<T> would be fine as well and let the developer decide whether all errors should be of the same type. After all, the whole do { try } catch { } mechanism has been designed to handled several error types using multiple catch statements (and these errors are not specified in the called function signature).

I know this would have a huge impact on the current implementation, but it's worth talking about it.

Documentation example

Hi,

This project looks great, but it really needs some examples, especially for those who are now to swift.

Tim

Why internal state?

I've looked through the source code, since this got merged into ReactiveCocoa, and I don't understand why there is an internal state. I can't find the advantage of the extra level of nesting over simply using an enum — and neither commit that introduced the change gave a reason. Can someone explain or give a use case where this is an advantage, by any chance? Thanks!

ENABLE_BITCODE on macosx causing carthage build failure

Hey! I'm trying to build Thomvis/BrightFutures using Carthage, and I'm getting this error. I'm on Carthage 0.9.4.

*** Building scheme "BrightFutures-Mac" in BrightFutures.xcworkspace
Build settings from command line:
    ONLY_ACTIVE_ARCH = NO

=== BUILD TARGET Result-Mac OF PROJECT Result WITH CONFIGURATION Release ===

Check dependencies
target 'Result-Mac' has bitcode enabled (ENABLE_BITCODE = YES), but it is not supported for the 'macosx' platform

** BUILD FAILED **


The following build commands failed:
    Check dependencies
(1 failure)
A shell task failed with exit code 65:
** BUILD FAILED **


The following build commands failed:
    Check dependencies
(1 failure)

Cannot use auto closure init in a closure

for example:

func(){
let result: Result<String, NSError> = Result(try tryIsSuccess("success")) //This is OK in function
}

let simpleBlock: ()->Void =  {
let result: Result<String, NSError> = Result(try tryIsSuccess("success")) //This is not OK in colure
}
simpleBlock()

So my suggestion is to add a init version without @autoclosure mark

extension Result{
    public init(_ f: () throws -> T) {
        self.init(try f())
    }
}

Release 0.4.4

Would you mind releasing 0.4.4 at 81b1896 for Swift 1.2, with the changes included in 0.5 for Swift 2? 🙏

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.