泛型函数类型中的通用量化

2023-12-27

正在阅读paper http://lucacardelli.name/Papers/OnUnderstanding.A4.pdf关于编程语言中的类型和多态性,我想知道是否可以用 Scala 表达类型成员上类似的通用量化。论文中的示例:

type GenericID = ∀A.A ↦ A

这是通用恒等函数的类型,以下是其论文语言的示例Fun是正确的:

value inst = fun(f: ∀a.a ↦ a) (f[Int], f[Bool])
value intId = fst(inst(id))   // return a function Int ↦ Int

有什么方法可以在 Scala 中表达类似的东西吗?

这与类型构造函数不同type GenericId[A] = A => A,因为这是一个类型操作∀A.A ↦ A是泛型函数的类型


根据我上面的评论:

scala> type Gen[+_] = _ => _
defined type alias Gen

scala> def f(x: List[Int]): Gen[List[Int]] = x map (y => s"{$y!$y}")
f: (x: List[Int])Gen[List[Int]]

scala> f(List(1, 4, 9))
res0: Function1[_, Any] = List({1!1}, {4!4}, {9!9})

换句话说,类型的同一性尚未被保留Gen[+_] = _ => _.

Addendum

scala> type Identity[A] = A => A
defined type alias Identity

scala> def f(x: List[Int]): Identity[List[Int]] = x => x.reverse
f: (x: List[Int])List[Int] => List[Int]

scala> f(List(1, 4, 9))
res1: List[Int] => List[Int] = <function1>

scala> def g(x: List[Int]): Identity[List[Int]] = x => x map (y => s"{$y!$y}")
<console>:35: error: type mismatch;
 found   : List[String]
 required: List[Int]
       def g(x: List[Int]): Identity[List[Int]] = x => x map (y => s"{$y!$y}")
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

泛型函数类型中的通用量化 的相关文章

  • 如何使用 Spark 执行插入覆盖?

    我正在尝试将我们的 ETL Hive 脚本之一转换为 Spark 其中 Hive ETL 脚本维护一个表 其中需要在每晚新同步之前删除部分数据 Hive ETL 使用插入覆盖的方式将主表删除超过 3 天的数据 基本上创建一个临时表 其中的数
  • 一般重写 Scala 案例类

    是否可以通用地替换案例类中的参数 更具体地说 假设我想要一个接收 查找 案例类和 替换 案例类 如语法规则的左侧和右侧 以及目标案例类的替代函数 并且该函数将返回将查找案例类的参数替换为替换案例类的新案例类 该函数还可以简单地采用一个案例类
  • JVM 是否会内联对象的实例变量和方法?

    假设我有一个非常紧密的内部循环 每次迭代都会访问和改变一个簿记对象 该对象存储有关算法的一些简单数据 并具有用于操作它的简单逻辑 簿记对象是私有的和最终的 并且它的所有方法都是私有的 最终的和 inline 下面是一个示例 Scala 语法
  • 如何用 Scala 编写毕达哥拉斯定理?

    直角三角形斜边的平方等于另外两条边的平方和 这就是毕达哥拉斯定理 根据斜边长度 a 和 b 计算斜边的函数将返回 sqrt a a b b 问题是 您如何在 Scala 中定义这样一个函数 使其可以与实现适当方法的任何类型一起使用 对于上下
  • 为什么构造函数参数要成为案例类的成员?

    class MyClass name String val x new MyClass x println x name Error name is not a member of MyClass but abstract class Ba
  • 如何在 Spark 中创建空数据帧

    我有一组基于 Avro 的配置单元表 我需要从中读取数据 由于Spark SQL使用hive serdes从HDFS读取数据 因此比直接读取HDFS慢很多 因此 我使用数据块 Spark Avro jar 从底层 HDFS 目录读取 Avr
  • 运行时动态转换

    有没有一种方法可以在运行时动态转换 如以下伪代码 foreach DataRow row in table Rows foreach DataColumn col in table Columns if row col DBNull Val
  • idea sbt java.lang.NoClassDefFoundError: org/apache/spark/SparkConf

    我是spark的初学者 我使用 linux idea sbt 构建了一个环境 当我尝试快速启动Spark时 我遇到了问题 Exception in thread main java lang NoClassDefFoundError org
  • 最后一项具有不同类型的元组(首先从剩余元素开始)

    我有一个类型Foo那是一个Array可以包含任意数量的Bar元素 带有可选的最后一个Qux元素 以下是一些有效数据的示例 bar qux bar qux bar bar bar bar bar bar bar bar qux 无效数据示例
  • 对于值类型,asInstanceOf[X] 和 toX 之间有什么区别吗?

    我使用 IntelliJ 将 Java 代码转换为 Scala 代码的功能 通常效果很好 看来 IntelliJ 用调用替换了所有强制转换asInstanceOf 是否有任何有效的用法asInstanceOf Int asInstanceO
  • Scala 如何将 Map 转换为元组的可变参数?

    在 Scala Play 2 2 x 测试的背景下 我有一个Map String String 我需要将其传递给接受的函数 String String 即一个可变参数 String String tuple e g val data Map
  • Scala 方法和高级类型参数

    我试图在 scala 中定义一个方法 它采用通用类型S lt Seq Double 并返回一个 S FixedLoad FixedLoad 是一个具体类型 但我的实现给了我错误 我不明白为什么 尽管我多次尝试去理解参数类型和高级类型 但我的
  • JavaFx ComboBox 绑定混乱

    我有一个 I18N 实现 它通过属性绑定 JavaFX UI 元素 例如 def translateLabel l Label key String args Any Unit l textProperty bind createStrin
  • 案例类和案例对象之间的区别?

    我正在学习 Scala 和 Akka 并且在最近的查找中solution https stackoverflow com questions 22770927 waiting for multiple results in akka 我发现
  • 我可以在 where 子句中使用 or ( || ) 吗?

    我正在尝试延长Array类型 但我只希望类型为时可用的函数Int or Float 我知道我可以针对一种类型执行此操作 extension Sequence where Iterator Element Int 但我可以对多种类型执行此操作
  • Scala:尝试 .getOrElse 与 if/else

    我是一名相当新的 Scala 开发人员 我是一名经验丰富的 Java 开发人员 到目前为止 我一直很喜欢 Scala 的简单性 我真的很喜欢函数式结构 而且它们常常迫使你编写更简洁的代码 然而最近我注意到 由于舒适性和简单性 我最终使用了在
  • 为什么 textarea 不是 input[type="textarea"]?

    为什么有一个元素
  • Twitter Future 与 Scala Future 相比有何优势?

    我知道 Scala Future 变得更好的很多原因 有什么理由改用 Twitter Future 吗 除了 Finagle 使用它这一事实之外 免责声明 我在 Twitter 负责 Future 的实施 一点背景知识 在 Scala 有一
  • .java 和 .scala 类之间是否可能存在循环依赖?

    假设我在 java 文件中定义了类 A 在 scala 文件中定义了类 B A 类使用 B 类 B 类使用 A 类 如果我使用 java 编译器 则会出现编译错误 因为 B 类尚未编译 如果我使用scala编译器A类将找不到 有没有可以同时
  • 如何在一列中存储数组或多个值

    运行 Postgres 7 4 是的 我们正在升级 我需要将 1 到 100 个选定项目存储到数据库的一个字段中 98 的情况下 只会输入 1 个项目 而 2 的情况下 如果是这样的话 会输入多个项目 这些项目只不过是文本描述 截至目前 长

随机推荐

  • C++ 我需要在任何地方为函数编写 throw 子句吗?

    Before 考虑有一个类和一个全局函数 例如 这是usefulfuncts hpp void dosome int a int b throw std exception This is usefulfuncts cpp void dos
  • 如何在 SQL 中将表连接到自身并选择最大值

    我有一个contracts table contractId date price partId 1 20120121 10 1 2 20110130 9 1 3 20130101 15 2 4 20110101 20 2 最大的合同dat
  • Bootstrap 轮播与 morris.js 图表冲突?

    我正在使用 morris js 绘制图表 并且我想通过引导轮播显示这些图表 但是如果我这样做 Firefox 将停止响应 它们单独工作可以很好 但如果放在一起就会崩溃 firebug 告诉我有一些与 Raphael 图书馆有关的事情 但我仍
  • 适用于 Android 和 IOS 的 HighChart 库 [已关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我想在 Android 和 iOS 移动应用程序中使用 HighCharts Android 或 iOS
  • 将函数指针“转换”为 Objective-C 中的块

    我正在做一些从 Mono C 到 Obj C 的互操作 并遇到了这个问题 C 代码需要传递回调 它使用函数指针来执行此操作 我可以从 Obj C 端获取函数指针并调用它 一切正常 但我现在需要将该函数指针作为回调提供给第三方 API 该 A
  • Xcode 4.5 - OS X Cocoa 应用程序 - 基本 Web 视图:打开时加载 Google

    我正在尝试创建一个极其基本的 OS X Cocoa 应用程序 该应用程序在打开时会加载http www google com http www google com 尽可能基本 没有后退或前进按钮等 我对 Xcode 4 5 的经验很少 并
  • 如何在反序列化“设置”对象时更新 WPF UI

    我的目标是这样做 用户选择设置文件 读取设置并相应更新 UI 显然 节省也应该是可能的 我的程序当前不是 WPF XAML 现在执行此操作意味着在需要新设置时需要进行大量重复和添加工作 所以有人告诉我 WPF XAML 是正确的选择 我研究
  • 在 C++ 中实现“有限通用性”

    我正在将一个项目从 Java 转移到 C 但我在 Java 中相对简单的东西上遇到了问题 我有课X它是为了处理类型的对象而设计的Y以及继承自的对象Y X经常需要调用方法Y say kewl method 并且这个方法在继承自的每个类中都是不
  • SQLite数据库-选择两个日期之间的数据?

    我想按日期选择数据 从一个日期到另一个日期 所以我有这个查询 SELECT FROM mytalbe WHERE date BETWEEN 2014 10 09 AND 2014 10 10 但这个查询只返回数据 2014 10 09 排除
  • 为什么 rownames(installed.packages()) 有一个名称属性?

    我有以下功能供个人使用 它需要输入作者的名字来查看我的机器上是否有他们的任何软件包 authoredPackages lt function author s lt sapply rownames installed packages pa
  • 为学说集合中的每个实体构建一个具有复选框的表单

    我正在显示一个经过过滤的实体集合的 html 表 并且我想在每行中显示一个复选框作为表单的一部分 该表单会将所选实体添加到会话变量中 我认为每个复选框都应该将实体 id 作为其值 并且我将从表单字段数据中获取 id 数组 好吧 所以该值应该
  • 如何获取 PostgreSQL 中聚合的定义/源代码?

    我发现这个相关答案很有用 从 PostgreSQL 导出 创建聚合 函数 https stackoverflow com questions 15112971 export create aggregate functions from p
  • 始终以基本形式处理 PreviewKeyDown 事件

    我们需要在基本表单中处理此事件 无论当前哪些控件具有焦点 我们有几个全局关键命令 无论控制焦点如何 它们都需要工作 这是通过正常处理表单中的 PreviewKeyDown 事件来实现的 当我们将用户控件添加到表单时 该事件不再触发 我在这里
  • 在 repl.it 上运行discord.py bot时如何解决“429:太多请求”?

    我的代码 见下文 运行良好 但随后弹出此错误并且不会消失 http py line 293 in static login data await self request Route GET users me File opt virtua
  • 通过ajax将当前页面html发送回服务器

    在我的应用程序中 我通过 jquery ajax 将网页的 html 发送回服务器 因为我需要在服务器中存储此页面的副本 代码如下 document ready function var pcontent document body inn
  • 如何使用自定义文档根在 Apache 2.4 中显示目录索引

    我在 Ubuntu 13 10 中的 Apache 2 4 中遇到问题 我尝试将文档根目录更改为 home fandi public html 一切工作正常 但我尝试在 public html 中创建文件夹 但收到如下错误 Sat Jan
  • 这个 Coldfusion 查询 SQL 注入证明吗?

    通常 我在应用程序中使用整数 id 但对于这个开发 我正在文本字段 标签名称 上进行查找 我确实使用了 cfqueryparam 但考虑到它是一个文本字段 它是否容易受到 SQL 注入攻击 如果是这样 除了繁琐地搜索 SQL 命令的字符串之
  • 我可以使用layout_weight来定位RelativeLayout吗?

    我一整天都在努力让它发挥作用 我想我可以使用RelativeLayout android layout weight 0 3 将三个按钮放置在屏幕右侧 不居中 而是距顶部向下 30 这可能吗 如果可以我该怎么做 以下是我的 XML 其中显示
  • 允许的内存大小 php.ini

    我有一个 Symfony 4 应用程序 我上传文件有 2MB 限制 这个限制有效 在开发环境中一切正常 图像上传得很好 但在产品中 我总是收到相同的消息 Fatal error Allowed memory size of 13421772
  • 泛型函数类型中的通用量化

    正在阅读paper http lucacardelli name Papers OnUnderstanding A4 pdf关于编程语言中的类型和多态性 我想知道是否可以用 Scala 表达类型成员上类似的通用量化 论文中的示例 type