像 JavaScript 或 Python 这样的松散类型语言提供的语义保护非常少,而像 Haskell 或 F # 这样的带有表达类型系统的语言则为技术熟练的开发人员提供了更高级别的保护。
例如,在 F # 中,ShoppingCart 类型可以指定购物车必须处于以下三种状态之一:
type ShoppingCart =
| EmptyCart // no data
| ActiveCart of ActiveCartData
| PaidCart of PaidCartData
现在编译器可以检查您的代码是否试图将购物车置于非法状态。
在 Python 中,您必须编写自己的代码来检查有效状态。
3. 高级语义
最后,在更高的层次上,语义与代码的目的有关——编写程序的原因。
这可以表示为伪代码,可以用任何完整的语言实现,例如:
// Check for an open trade for EURUSD
// For any open trade, close if the profit target is reached
// If there is no open trade for EURUSD, check for an entry signal
// For an entry signal, use risk settings to calculate trade size
// Submit the order.