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