Metadata revisions for railroad-0.2.0.1

Package maintainers and Hackage trustees are allowed to edit certain bits of package metadata after a release, without uploading a new tarball. Note that the tarball itself is never changed, just the metadata that is stored separately. For more information about metadata revisions, please refer to the Hackage Metadata Revisions FAQ.

No. Time User SHA256
-r1 2026-10-11T14:00:21Z mastratisi 8b752df4f283027cfed23030abba201f771f8090ec740d9ec5fd5551de27796b
  • Changed synopsis from

    A railway oriented mini-DSL for unified error handling.
    to
    Railway-oriented error handling: unwrap or throw in one short operator.

  • Changed description from

    A railway oriented mini-DSL for handling and interpreting error states 
    and cardinality checks across diverse failure types in a unified way.
    to
    Railway-oriented error handling for Haskell: one short operator per
    step, and the failure paths stop taking up lines.
    
    Each operator peels one layer of a result (@Maybe@, @Either@, @Bool@,
    @Validation@, or a collection of them) and says what to throw if it
    failed. Where you would write
    
    > rows <- runQuery (userById uid) >>= either (const (throwError err503)) pure
    > user <- case rows of
    >   []  -> throwError err404
    >   [u] -> pure u
    >   _   -> throwError err500
    
    you write
    
    > user <- runQuery (userById uid) ? err503 ?! cardinalityErr err404 (const err500)
    
    Layers are peeled left to right: @? err503@ unwraps the database
    @Either@, then @?!@ demands exactly one row (none is a 404, several a 500).
    
    * Works in any @MonadError@ ("Railroad.MonadError": @mtl@, @ExceptT@,
      servant's @Handler@) and in @effectful@ with the @Error@ effect
      ("Railroad").
    
    * Unwrap or throw: @?@ (constant error) and @??@ (error computed from
      the failure). Recover instead of throwing: @?~@ and @??~@.
    
    * Tag by a predicate with @?>@, or fall back to another source with @?|@
      and @?|<>@.
    
    * @Validation@ failures accumulate: validate a whole request and report
      every problem at once.
    
    * All operators are @infixl 1@ like @>>=@ and @\<&\>@, so they chain without
      parentheses.
    
    Collections are checked with quantifiers: @?@ is ∀ ("every element
    succeeds", so an empty collection passes), @?+@ is ∃ ("at least one"),
    @?!@ is ∃! ("exactly one") and @?∅@ is ¬∃ ("none"). They chain:
    @xs ?+ e1 ? e2@ means "at least one, and all succeed". The readme has the
    details and a longer servant example.

-r0 2026-10-11T12:38:02Z mastratisi 706460e7531fd9c38da21fc0597463a18555f3161ecea6646b85f3be69a513d7