enum FmtOption { FixedPrecision:FmtOption; } enum Fmt { Opt(opt:FmtOption):Fmt; } class Main { static public function main() { } static function eval(fmt:Fmt, f:String -> A):B { return switch (fmt) { case Opt(FixedPrecision): $type(fmt); var r =f(""); $type(f); r; } } }