Enforce Bounded Nat?

时光怂恿深爱的人放手 提交于 2019-12-02 20:06:31

问题


How can I enforce a Nat that's <= N?

Example:

def lessThan5(x: NatLT5) = ???

where

lessThan5(Nat(4)) would compile, but lessThan5(Nat(6)) would not.


回答1:


You can use the type class LTEq (or LT if you want strictly less than).

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


来源:https://stackoverflow.com/questions/39156628/enforce-bounded-nat

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!