首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >这个功能可以用Haskell的类型系统实现吗?

这个功能可以用Haskell的类型系统实现吗?
EN

Stack Overflow用户
提问于 2011-10-10 01:12:21
回答 3查看 1.9K关注 0票数 18

在Scala中,集合上的高阶操作总是返回上下文中可能的最佳类型。例如,在BitSet的情况下,如果将in映射到in,则会得到一个BitSet,但如果将in映射到字符串,则会得到一个通用的Set。类似地,如果您使用生成一对的函数对Map执行map操作,则会返回一个Map。否则你会得到一个简单的Iterable。map结果的静态类型和运行时表示都取决于传递给它的函数的结果类型。

代码语言:javascript
复制
scala> Map(2 -> 'a', 6 -> 'b') map { case (k, v) => (k + 1, v.toString) }
res0: scala.collection.immutable.Map[Int,java.lang.String] = Map(3 -> a, 7 -> b)

scala> Map(2 -> 'a', 6 -> 'b') map { _._1 }
res1: scala.collection.immutable.Iterable[Int] = List(2, 6)

scala> import collection.immutable.BitSet
import collection.immutable.BitSet

scala> BitSet(2, 44, 93).map(1 +)
res3: scala.collection.immutable.BitSet = BitSet(3, 45, 94)

scala> BitSet(2, 44, 93).map(_ + "hola")
res4: scala.collection.immutable.Set[String] = Set(2hola, 44hola, 93hola)

是否有可能在Haskell的类型系统中实现相同的功能?如果是,是如何实现的?以上代码片段中的示例的Haskell翻译将非常受欢迎。:-)

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7705119

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档