fallible


License

License

GroupId

GroupId

org.codeswarm
ArtifactId

ArtifactId

fallible_2.9.2
Last Version

Last Version

1.0
Release Date

Release Date

Type

Type

jar
Description

Description

fallible
fallible
Project URL

Project URL

https://github.com/codeswarm/fallible
Project Organization

Project Organization

org.codeswarm
Source Code Management

Source Code Management

https://github.com/codeswarm/fallible

Download fallible_2.9.2

How to add to project

<!-- https://jarcasting.com/artifacts/org.codeswarm/fallible_2.9.2/ -->
<dependency>
    <groupId>org.codeswarm</groupId>
    <artifactId>fallible_2.9.2</artifactId>
    <version>1.0</version>
</dependency>
// https://jarcasting.com/artifacts/org.codeswarm/fallible_2.9.2/
implementation 'org.codeswarm:fallible_2.9.2:1.0'
// https://jarcasting.com/artifacts/org.codeswarm/fallible_2.9.2/
implementation ("org.codeswarm:fallible_2.9.2:1.0")
'org.codeswarm:fallible_2.9.2:jar:1.0'
<dependency org="org.codeswarm" name="fallible_2.9.2" rev="1.0">
  <artifact name="fallible_2.9.2" type="jar" />
</dependency>
@Grapes(
@Grab(group='org.codeswarm', module='fallible_2.9.2', version='1.0')
)
libraryDependencies += "org.codeswarm" % "fallible_2.9.2" % "1.0"
[org.codeswarm/fallible_2.9.2 "1.0"]

Dependencies

compile (1)

Group / Artifact Type Version
org.scala-lang : scala-library jar 2.9.2

test (1)

Group / Artifact Type Version
org.scalatest : scalatest_2.9.2 jar 1.8

Project Modules

There are no modules declared in this project.

Fallible

Example usage

import org.codeswarm.fallible._

def parse(s: String): Fallible[Int, String] =
  try {
    Success(s.toInt)
  } catch {
    case e: NumberFormatException =>
      Failure("Invalid format: '%s'".format(s))
  }

def halve(s: String): Fallible[Int, String] =
  parse(s) flatMap { i =>
    if (i % 2 == 0)
      Success(i / 2)
    else
      Failure("Odd number: %d".format(i))
  }

/* Result: Success(12)
 */
println(halve("24"))

/* Result: Failure(List(Odd number: 25))
 */
println(halve("25"))

/* Result: Failure(List(Invalid format: 'pie'))
 */
println(halve("pie"))

/* OR operator returns the first success encountered.
 *
 * Result: Success(4)
 */
println(halve("7") || halve("8") || halve("9") || halve("10"))

/* AND operator collects all failures.
 *
 * Result: Failure(List(Odd number: 7, Invalid format: pie))
 */
println(halve("7") && halve("8") && halve("pie") && halve("10"))

Download

Fallible is available from Maven Central.

<dependency>
  <groupId>org.codeswarm</groupId>
  <artifactId>fallible_2.10</artifactId>
  <version>1.1</version>
</dependency>
<dependency>
  <groupId>org.codeswarm</groupId>
  <artifactId>fallible_2.9.2</artifactId>
  <version>1.0</version>
</dependency>
org.codeswarm

Codeswarm

Versions

Version
1.0