如何使这些动态类型函数类型安全? [关闭]

2023-12-25

是否有任何编程语言(或类型系统)可以以静态类型和类型安全的方式表达以下 Python 函数(无需使用强制转换、运行时检查等)?

#1:

# My function - What would its type be? 
def Apply(x):
    return x(x)

# Example usage
print Apply(lambda _: 42)

#2:

white = None
black = None

def White():
    for x in xrange(1, 10):
        print ("White move #%s" % x)
        yield black

def Black():
    for x in xrange(1, 10):
        print ("Black move #%s" % x)
        yield white

white = White()
black = Black()

# What would the type of the iterator objects be?
for it in white:
    it = it.next()

1#这不能用有限类型来输入。这意味着很少(如果有的话)编程语言能够输入此内容。

然而,正如您所演示的,x 有一个特定的类型,允许输入该函数:

x :: t -> B

Where B是某种具体类型。这导致apply键入为:

apply :: (t -> B) -> B

请注意,Hindley-Milner 不会派生此类型。

2#这很容易用 Haskell 来表示(留给读者作为练习......)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使这些动态类型函数类型安全? [关闭] 的相关文章

随机推荐

  • 如何将 core-js Map 导入 angular-cli webpack 生成的应用程序

    1 0 0 beta 11 webpack 现在使用 core js 进行 polyfill 我正在尝试导入地图以在我的应用程序中使用 import Map from core js es6 map import Map from core
  • 为什么合并 PDF 会使文件大小变大?

    我正在尝试将各种 PDF 拆分在一起 它们的文字不多 偶尔会有图像 举例来说 我有两个 PDF 1 4Mb 和 740kb 当我将它们合并时 它们会膨胀到 6Mb 我尝试过脚本化组合和手动附加 结果相同 所以我猜测这是一个根本问题 对为什么
  • 上下文在 Code First 模式下使用,其中的代码是从 EDMX 文件生成的,用于 Database First 或 Model First 开发

    我正在尝试将最初使用 EF4 开发的项目迁移到 EF6 以利用 EF6 事务管理 我面临的问题是该项目是使用数据库优先方法创建的 所以当我使用类似的代码时context Database UseTransaction 我遇到以下错误 The
  • Sublime text:如何将键绑定添加到 hex_viewer 包命令

    我已经在 sublime text 3 上安装了 Hex Viewer 包 为了切换它 我使用 ctrl shift p 打开命令面板 然后我搜索 hex 并选择包的命令来切换十六进制视图 我想知道如何将键绑定到特定的包命令 我知道键绑定配
  • IISExpress 用户界面 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我刚刚下载并安装了 IIS Express 从命令行运行它一切正常 但是我如何配置它的选项 是否有一个
  • Python os.path.relpath 行为

    我有一个目录bar在目录内foo 带文件foo file txt在目录中foo和文件bar file txt在目录中bar i e computer ls foo computer ls foo bar foo file txt compu
  • 云优化与云原生

    在尝试更好地理解云原生应用程序时 我遇到了云优化这个术语 有人可以帮助我了解云优化与云原生之间的区别吗 云优化涉及应用程序如何迁移到云或在那里开发和托管 如何通过优化过程来提供更多价值 降低成本 标准化事物 最初 一旦迁移或托管在云中 由于
  • 命令 APDU 在结果中返回 6985(不满足使用条件)

    我正在研究用 Java 读取智能卡 当我执行下面的代码时 卡返回 6985 不满足使用条件 TerminalFactory factory TerminalFactory getDefault List
  • 快速从网络抓取函数返回一个字符串

    好的 我正在抓取网页的一些基本数据 我想将我的代码重构为另一个类 并从我检索到的内容返回一个字符串 但这对于异步函数来说很困难 而且我对 swift 很陌生 我现在意识到这个函数无法返回字符串 但我不太清楚如何配置完成处理程序以及如何使用完
  • 添加新颜色以及自定义主题颜色 angular2 材质

    如何在 Angular 2 材质中添加新颜色 它在 ng2 material 文档中指定 color primary accent warn 被接受 我想添加类似 progressbarcolor 的内容 而不是在我的 angular2 材
  • 包括未找到模块 RubyMotion

    RubyMotion 中允许 mixin 吗 我有一个包含两个文件的目录 一个是类 另一个是模块 当我在类中包含模块 mixin 时 出现未找到错误 RM 中自动需要应用程序下的所有内容 对吗 谢谢你的帮助 找到了 http dylanma
  • Javascript WebWorker - 异步/等待

    我正在尝试卸载阻塞我的用户界面的长时间运行的进程 WebWorker 方法似乎是解决这种情况的最佳方法 但是 我需要使用的库之一具有 async await WebWorker 的 JS API 有限 并且似乎没有 async await
  • 比较 javascript/jquery 中的两种日期格式

    我有以下内容 var fit start time fit start time val 2013 09 5 var fit end time fit end time val 2013 09 10 if Date parse fit st
  • 如何解析rabbitmq状态输出?

    我在 Linux 上安装了 RabbitMQ 它是一个很棒的软件 当我运行这个命令时 sudo rabbitmqctl status 我得到一团糟的输出 pid 18665 running applications rabbitmq man
  • 如何通过代码打开 Vaadin ComboBox?

    是否可以开一个Vaadin ComboBox通过代码 我想展示两个相互依赖的组合框 当用户在第一个组合框中选择一个值时 我希望第二个组合框自动打开可能的选择 以便用户可以直接选择一个 而不必自己打开第二个组合框 也许我可以发送一个事件来触发
  • 如何比较java中的两个字符串并按字母顺序定义其中一个比另一个小?

    我想使用二分搜索算法来搜索用户在一个非常大的排序文件中输入的字符串 我无法将用户输入的字符串与位于文件中间行的字符串进行比较以继续我的二分搜索 例如 如果用户的字符串是abcda文件的字符串是abcza 很明显用户的字符串比文件的字符串小
  • 错误 C4996:“scanf”:此函数或变量在 C 编程中可能不安全

    我创建了一个小型应用程序 通过使用带参数的用户定义函数来查找最大数量 当我运行它时 它显示此消息 错误 1 错误 C4996 scanf 此函数或变量可能不安全 考虑使用 scanf s 代替 要禁用弃用 请使用 CRT SECURE NO
  • 由于私钥过滤器,使用signtool进行代码签名失败

    在尝试签署我工作的公司创建的一些安装程序时 我遇到了一个错误 但我无法解决 我正在使用已在另一台计算机 Win7 上成功使用的相同证书 以相同的方式签署准相同的安装程序 无论如何 在运行 CruiseControl net 的 Window
  • R Shiny - 了解更新相互依赖的输入时观察和观察事件之间的区别

    下面的应用程序有两个相互依赖的 numericInputs a and b 的价值input a is 1 input b和价值input b is 1 input a 每当用户更改输入的值时 我想相应地更新另一个输入的值 下面的代码包含两
  • 如何使这些动态类型函数类型安全? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 是否有任何编程语言 或类型系统 可以以静态类型和类型安全的方式表达以下 Python 函数 无需使用强制转换 运行时检查等 1 My