#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub(crate) enum Builtin {
ResultOk,
ResultErr,
OptionSome,
ResultWithDefault,
OptionWithDefault,
OptionToResult,
IntAbs,
IntToFloat,
IntToString,
IntFromString,
IntParse,
IntMin,
IntMax,
IntRem,
IntMod,
FloatAbs,
FloatSqrt,
FloatPow,
FloatRound,
FloatFloor,
FloatCeil,
FloatToInt,
FloatToString,
FloatFromString,
FloatParse,
FloatPi,
FloatMin,
FloatMax,
FloatSin,
FloatCos,
FloatAtan2,
StringLen,
StringConcat,
StringCharAt,
StringChars,
StringSlice,
StringContains,
StringStartsWith,
StringEndsWith,
StringTrim,
StringSplit,
StringJoin,
StringReplace,
StringRepeat,
StringIndexOf,
StringToUpper,
StringToLower,
StringFromInt,
StringFromFloat,
StringFromBool,
StringByteLength,
BoolOr,
BoolAnd,
BoolNot,
CharToCode,
CharFromCode,
ByteToHex,
ByteFromHex,
ListLen,
ListHead,
ListTail,
ListPrepend,
ListTake,
ListDrop,
ListConcat,
ListReverse,
ListContains,
ListFind,
ListAny,
ListZip,
VectorNew,
VectorGet,
VectorSet,
VectorLen,
VectorFromList,
VectorToList,
MapEmpty,
MapGet,
MapSet,
MapHas,
MapRemove,
MapKeys,
MapValues,
MapEntries,
MapLen,
MapFromList,
}
pub(crate) fn recognize_builtin(name: &str) -> Option<Builtin> {
Some(match name {
"Result.Ok" => Builtin::ResultOk,
"Result.Err" => Builtin::ResultErr,
"Option.Some" => Builtin::OptionSome,
"Result.withDefault" => Builtin::ResultWithDefault,
"Option.withDefault" => Builtin::OptionWithDefault,
"Option.toResult" => Builtin::OptionToResult,
"Int.abs" => Builtin::IntAbs,
"Int.toFloat" | "Float.fromInt" => Builtin::IntToFloat,
"Int.toString" => Builtin::IntToString,
"Int.fromString" => Builtin::IntFromString,
"Int.parse" => Builtin::IntParse,
"Int.min" => Builtin::IntMin,
"Int.max" => Builtin::IntMax,
"Int.rem" => Builtin::IntRem,
"Int.mod" => Builtin::IntMod,
"Float.abs" => Builtin::FloatAbs,
"Float.sqrt" => Builtin::FloatSqrt,
"Float.pow" => Builtin::FloatPow,
"Float.round" => Builtin::FloatRound,
"Float.floor" => Builtin::FloatFloor,
"Float.ceil" => Builtin::FloatCeil,
"Float.toInt" => Builtin::FloatToInt,
"Float.toString" => Builtin::FloatToString,
"Float.fromString" => Builtin::FloatFromString,
"Float.parse" => Builtin::FloatParse,
"Float.pi" => Builtin::FloatPi,
"Float.min" => Builtin::FloatMin,
"Float.max" => Builtin::FloatMax,
"Float.sin" => Builtin::FloatSin,
"Float.cos" => Builtin::FloatCos,
"Float.atan2" => Builtin::FloatAtan2,
"String.len" => Builtin::StringLen,
"String.concat" => Builtin::StringConcat,
"String.charAt" => Builtin::StringCharAt,
"String.chars" => Builtin::StringChars,
"String.slice" => Builtin::StringSlice,
"String.contains" => Builtin::StringContains,
"String.startsWith" => Builtin::StringStartsWith,
"String.endsWith" => Builtin::StringEndsWith,
"String.trim" => Builtin::StringTrim,
"String.split" => Builtin::StringSplit,
"String.join" => Builtin::StringJoin,
"String.replace" => Builtin::StringReplace,
"String.repeat" => Builtin::StringRepeat,
"String.indexOf" => Builtin::StringIndexOf,
"String.toUpper" => Builtin::StringToUpper,
"String.toLower" => Builtin::StringToLower,
"String.fromInt" => Builtin::StringFromInt,
"String.fromFloat" => Builtin::StringFromFloat,
"String.fromBool" => Builtin::StringFromBool,
"String.byteLength" => Builtin::StringByteLength,
"Bool.or" => Builtin::BoolOr,
"Bool.and" => Builtin::BoolAnd,
"Bool.not" => Builtin::BoolNot,
"Char.toCode" => Builtin::CharToCode,
"Char.fromCode" => Builtin::CharFromCode,
"Byte.toHex" => Builtin::ByteToHex,
"Byte.fromHex" => Builtin::ByteFromHex,
"List.len" => Builtin::ListLen,
"List.head" => Builtin::ListHead,
"List.tail" => Builtin::ListTail,
"List.prepend" => Builtin::ListPrepend,
"List.take" => Builtin::ListTake,
"List.drop" => Builtin::ListDrop,
"List.concat" => Builtin::ListConcat,
"List.reverse" => Builtin::ListReverse,
"List.contains" => Builtin::ListContains,
"List.find" => Builtin::ListFind,
"List.any" => Builtin::ListAny,
"List.zip" => Builtin::ListZip,
"Vector.new" => Builtin::VectorNew,
"Vector.get" => Builtin::VectorGet,
"Vector.set" => Builtin::VectorSet,
"Vector.len" => Builtin::VectorLen,
"Vector.fromList" => Builtin::VectorFromList,
"Vector.toList" => Builtin::VectorToList,
"Map.empty" => Builtin::MapEmpty,
"Map.get" => Builtin::MapGet,
"Map.set" => Builtin::MapSet,
"Map.has" => Builtin::MapHas,
"Map.remove" => Builtin::MapRemove,
"Map.keys" => Builtin::MapKeys,
"Map.values" => Builtin::MapValues,
"Map.entries" => Builtin::MapEntries,
"Map.len" => Builtin::MapLen,
"Map.fromList" => Builtin::MapFromList,
_ => return None,
})
}