执行有界 Nat?

Enforce Bounded Nat?

如何强制执行 Nat<= N

示例:

def lessThan5(x: NatLT5) = ???

哪里

lessThan5(Nat(4)) 会编译,但 lessThan5(Nat(6)) 不会。

如果您希望严格小于,可以使用 class LTEq (or LT 类型。

import shapeless.nat._
import shapeless.ops.nat._

def lessThan5[N <: Nat](n: N)(implicit ev: LTEq[N, _5]) = ???

lessThan5(_4) // compiles
lessThan5(_5) // compiles
lessThan5(_6) // doesn't compile because LTEq[_6, _5] cannot be found