Ich habe eine Funktion mit der folgenden Signatur:Funktion Wrapper/Dekorateur in OCaml
val func : a -> b -> c -> d -> e -> f -> unit
und manchmal wirft es Ausnahmen. Ich möchte den Kontrollfluss ändern, so dass es wie folgt aussieht:
val funcw : a -> b -> c -> d -> e -> f -> [ `Error of string | `Ok of unit ]
So wie ich es versucht Verpackung ist hässlich: eine andere Funktion machen, funcw
, welche die gleiche Menge von Argumenten entgegennimmt, gilt func
zu ihnen, und tut try
/with
. Aber es muss einen besseren Weg geben. Gedanken?
Sorry, ich merkte, dass ich 2 'f's hatte (eine eine Funktion und eine eine Art). Geändert zu 'func' und' funcw'. Ich würde diese Art von Lösung lieber vermeiden, da sie den einzigen Wahrheitspunkt entfernt, für den die Argumente "func" brauchen. – tekknolagi
FWIW-Typen und -Werte belegen unterschiedliche Namespaces. Sie können eine Funktion namens f und einen Typ namens f haben. –
Ah, danke. Geändert, um es irgendwie klarer zu machen. – tekknolagi