gpt4 book ai didi

scala - 在不够多态的情况下,为什么实现 `List a -> List a -> List a` 的方法比 `List Char -> List Char -> List Char` 少

转载 作者:行者123 更新时间:2023-12-04 19:56:51 26 4
gpt4 key购买 nike

insufficiently-polymorphic

作者说: def foo[A](fst: List[A], snd: List[A]): List[A]

There are fewer ways we can implement the function. In particular, we can’t just hard-code some elements in a list, because we have no ability to manufacture values of an arbitrary type.

这个我没看懂,因为也在[Char]版本我们无法制造任意类型的值,我们必须拥有 [Char] 类型的值那么为什么实现这个的方法更少呢?

最佳答案

在通用版本中,您知道输出列表只能包含 fstsnd 中包含的元素的一些排列,因为无法构造新值一些任意类型 A。相反,如果您知道输出类型是 Char,您可以例如

def foo(fst: List[Char], snd: List[Char]) = List('a', 'b', 'c')

此外,您不能使用输入列表中包含的值来做出影响输出的决策,因为您不知道它们是什么。如果您知道输入类型,则可以执行此操作,例如

def foo(fst: List[Char], snd: List[Char]) = fst match {
case Nil => snd
case 'a'::fs => snd
case _ => fst
}

关于scala - 在不够多态的情况下,为什么实现 `List a -> List a -> List a` 的方法比 `List Char -> List Char -> List Char` 少,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40043526/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com