Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala 如何在参数定义中约束列表的最大长度?_Scala_Types_Collections - Fatal编程技术网

Scala 如何在参数定义中约束列表的最大长度?

Scala 如何在参数定义中约束列表的最大长度?,scala,types,collections,Scala,Types,Collections,我的一个函数是从零到五个整数参数和从零到五个字符串参数。因此,我认为它定义为2个列表的函数: f(数字:列表[INT],字符串:列表[String ])< /代码>。但我认为如果可能的话,约束长度是好的,因为IDE和/或编译器可以强制执行它。这是可能的吗?我想你真的需要很多类型的系统来制作这个。。。这是依赖类型编程的经典任务,不幸的是Scala不属于这一类 你可以看看: 但是,如果按照这条路线进行,则必须以这样一种方式构建所有列表,即编译器可以清楚地看到长度类型。这意味着没有递归,没有无界循环,

我的一个函数是从零到五个整数参数和从零到五个字符串参数。因此,我认为它定义为2个列表的函数:<代码> f(数字:列表[INT],字符串:列表[String ])< /代码>。但我认为如果可能的话,约束长度是好的,因为IDE和/或编译器可以强制执行它。这是可能的吗?

我想你真的需要很多类型的系统来制作这个。。。这是依赖类型编程的经典任务,不幸的是Scala不属于这一类

你可以看看:

但是,如果按照这条路线进行,则必须以这样一种方式构建所有列表,即编译器可以清楚地看到长度类型。这意味着没有递归,没有无界循环,等等。你还必须想出一种编码的方法。”
type _0 = Nat0
type _1 = Succ[_0]
type _2 = Succ[_1]
// ...
case class Small[+X](l: List[X])

def small(): Small[Nothing] = Small(List())
def small[A](a: A): Small[A] = Small(List(a))
def small[A](a1: A, a2: A): Small[A] = Small(List(a1,a2))