Forced Limited Nut?

How can I apply Natwhich <= N?

Example:

def lessThan5(x: NatLT5) = ???

Where

lessThan5(Nat(4))will compile but lessThan5(Nat(6))will not.

0
source share
1 answer

You can use a class like LTEq(or LTif you want strictly less).

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
+2
source

Source: https://habr.com/ru/post/1652702/


All Articles