强制有界Nat?

时间:2016-08-26 00:20:40

标签: scala shapeless

如何强制执行Nat的{​​{1}}?

示例:

<= N

,其中

def lessThan5(x: NatLT5) = ???会编译,但lessThan5(Nat(4))不会。

1 个答案:

答案 0 :(得分:2)

您可以使用类型类LTEq(或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