function Option.Match(S,f)local v=f.Some local h=f.None assert(type(v)=="\102\117\110\099\116\105\111\110","\077\105\115\115\105\110\103 \'\083\111\109\101\' \109\097\116\099\104")assert(type(h)=="\102\117\110\099\116\105\111\110","\077\105\115\115\105\110\103 \'\078\111\110\101\' \109\097\116\099\104")if S:IsSome()then return v(S:Unwrap())else return h()end end

function Option:Match(matches)
	local onSome = matches.Some
	local onNone = matches.None
	assert(type(onSome) == "function", "Missing 'Some' match")
	assert(type(onNone) == "function", "Missing 'None' match")
	if self:IsSome() then
		return onSome(self:Unwrap())
	else
		return onNone()
	end
end

