(record Result/Ok value) (record Result/Ex value) (let Result/ok Result/Ok/create) (let Result/ex Result/Ex/create) (let Result/map (\[f m] (match (kind m) "Result/Ok" (Result/ok (f (Result/Ok/get-value m))) "Result/Ex" m))) (let Result/map-ex (\[f m] (match (kind m) "Result/Ok" m "Result/Ex" (Result/ex (f (Result/Ex/get-value m)))))) (let Result/and-then (\[f m] (match (kind m) "Result/Ok" (f (Result/Ok/get-value m)) "Result/Ex" m))) (let Result/try (\[catch-f m] (match (kind m) "Result/Ok" (Result/Ok/get-value m) "Result/Ex" (catch-f (Result/Ex/get-value m)))))