| bad : <X Buf|Y U8> -> {one : <X Buf|Y U8>,two : <X Buf|Y U8>}#; |
| foo : <X Buf|Y U8> |
| -> <C Buf|D {one : <X Buf take|Y U8>,two : <X Buf take|Y U8>}#>; |
| foo v = case v : <X Buf|Y U8> of |
| X b -> C (b : Buf) : <C Buf |
| |D {one : <X Buf take|Y U8> |
| ,two : <X Buf take|Y U8>}#> |
| | z -> D ({one = z : <X Buf take|Y U8> |
| ,two = z : <X Buf take|Y U8>} : {one : <X Buf take|Y U8> |
| ,two : <X Buf take |
| |Y U8>}#) : <C Buf |
| |D {one : <X Buf take |
| |Y U8> |
| ,two : <X Buf take |
| |Y U8>}#> |
| end : <C Buf|D {one : <X Buf take|Y U8>,two : <X Buf take|Y U8>}#>; |
| okay : <X U8|Y U8> -> {one : <X U8|Y U8>,two : <X U8|Y U8>}#; |
| okay z = {one = z : <X U8|Y U8>,two = z : <X U8|Y U8>} : {one : <X U8|Y U8> |
| ,two : <X U8|Y U8>}#; |