txt: ## dist_cpan-KAIEPI-Failable.md
  [![Build Status](https://travis-ci.org/Kaiepi/p6-Failable.svg?branch=master)](https://travis-ci.org/Kaiepi/p6-Failable)
  
  # NAME
  
  Failable - Failure sum type
  
  # SYNOPSIS
  
  ```
  use Failable;
  
  sub cat(*@params --> Str:D) {
      my Proc:D $proc = run "cat", |@params, :out, :err;
      my Str:D  $out  = $proc.out.slurp(:close);
      my Str:D  $err  = $proc.err.slurp(:close);
      fail $err if $err;
      $out
  }
  
  my Failable[Str:D] $output = cat "/etc/hosts";
  say $output.WHAT; # OUTPUT: (Str)
  
  my Failable[Str:D] $error = cat '.';
  say $error.WHAT; # OUTPUT: (Failure)
  
  ```
  
  # DESCRIPTION
  
  Failable is a class for creating Failure sum types. Parameterizing Failable creates a new subset of Failure and the parameter passed. This allows you to type variables that are declared using the return values of routines that can fail.
  
  # AUTHOR
  
  Ben Davies (Kaiepi)
  
  # COPYRIGHT AND LICENSE
  
  Copyright 2019 Ben Davies
  
  This library is free software; you can redistribute it and/or modify it under the Artistic License 2.0.
  