什么是谓词调度

2024-04-12

我最近看到很多关于 Clojure 中谓词分派的讨论,想知道这件事是否有什么意义。换句话说,什么是谓词分派以及它与泛型函数、OOP 多态性和模式有何不同? 谢谢


谓词分派包含泛型函数、OOP 多态性、模式匹配等。一个好的概述是谓词调度:统一的调度理论 http://www.cs.washington.edu/homes/mernst/pubs/dispatching-ecoop98-abstract.html作者:迈克尔·恩斯特、克雷格·卡普兰和克雷格·钱伯斯。从其摘要来看:

谓词分派通过允许任意谓词控制方法的适用性并使用谓词之间的逻辑蕴涵作为压倒一切的关系,概括了以前的方法分派机制。选择处理消息发送的方法不仅取决于参数的类(如普通的面向对象调度),还取决于子组件的类、参数的状态以及对象之间的关系。

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

什么是谓词调度 的相关文章

  • 从命令行将 clojure 源代码编译为类(AOT)(不使用 lein)

    我正在尝试将 clojure 源代码编译成类文件 并仅使用命令行运行它 没有 lein 也没有 可能 回复 我有 core cljsrc hello目录 src hello core clj 这是源代码 ns hello core defn
  • 在java中将对象声明为final

    有人可以澄清以下代码的意义吗 class A int i 10 public void setI int b i b public int getI return i class Test public static void main S
  • 添加类方法后如何更新类的实例?

    我发现自己陷入了困境 我开发了一个类 然后创建了该类的一个实例 这些类通常会执行数据和统计操作 这些操作需要很长时间 有时需要 20 分钟 我将继续开发我的类 并向其中添加其他方法 现在 如何使用新方法更新以前的类实例而不重新初始化该类的旧
  • 如何使用工厂来创建使用策略模式的对象?

    假设我们的在线商店有一个简单的支付功能 我们希望使用不同的交易处理器来管理不同的交易 交易可以是付款或退款 交易处理器可以是 Paypal 或 Payplug 所以我们有以下课程 class PaymentTransaction imple
  • core.async不是违背Clo​​jure原则吗?

    我看到许多 Clo jure 程序员对新的 core async 库充满热情 尽管它看起来很有趣 但我很难看出它如何符合 Clojure 原则 所以我有以下问题 它在任何地方都使用可变状态 正如函数名称通过感叹号所暗示的那样 例如 alt
  • 宏、Clojure 与 Common Lisp

    我和我的一些朋友正在开发一个新平台 我们想用 lisp 构建它 主要吸引力是宏 我们都使用 Common Lisp 但我想探索 Clojure 的选择 当我提出这一点时 其中一位说宏观体系 较弱 我想知道这是否属实 以及在哪些领域 就您可以
  • php oop 如何使用属性和方法形成类

    我是 php oop 的新手 我对类有一些想法 但我仍然不知道如何在创建的对象中使用它的属性和方法 我需要了解下面报告的代码是否正确 如果不正确我做错了什么 我假设我有一个可以为我做任何事情的课程 我们称之为 Class myClass 现
  • Clojure / Noir:强制 HTTPS,如果请求是 http:// 则重定向到 https://

    我正在尝试在我的网站上强制使用 SSL 我想要一个环形中间件 将网站重定向到与 https 相同的 URL 如果它只是 http 我编写了以下代码 但除了检查请求方案并打印它应该重定向到的 URL 之外 它实际上没有做任何事情 defn h
  • 现实世界抽象类使用简单示例

    有没有使用抽象类的现实世界简单示例 我试图进入 PHP 的 OOP 但我仍然无法理解 为什么应该使用抽象类以及何时使用 是的 我知道不可能创建抽象类实例 只能创建继承它的类的实例 也许您有一个图像类 并且有 2 个驱动程序 GD 和 Ima
  • PHP - 多个不同的数据库依赖注入类

    我花了过去几个小时试图找到 最佳 最合乎逻辑的方法的答案 以编写一个 php 数据库类以同时连接到一个 postgresql 数据库和一个 mysql 数据库 另外 我想采用依赖注入设计 但对整个概念还是陌生的 到目前为止我已经想出了 cl
  • UserDict 类的优点?

    使用有什么好处UserDict class 我的意思是 我真正得到的不是 class MyClass object def init self self a 0 self b 0 m MyClass m a 5 m b 7 我将写下以下内容
  • 如何用 Java 或 C# 等语言实现统一算法?

    我正在读我拿到的人工智能教科书 我已经解决了我的部分的最后一个作业问题 以您选择的任何语言实施第 69 页概述的统一算法 在第 69 页 您有以下统一算法的伪代码 function unify E1 E2 begin case both E
  • Clojure:生成所有键盘可输入字符

    Context 我想生成可以通过以下方式生成的所有字符 打开记事本 按键盘上的单个键 按住 Shift 按键盘上的单个键 我目前拥有的 concat range int a int z range int A int Z range int
  • Clojure 中 with-local-vars 和 with-bounds 之间的区别

    Clojure 的文档with local vars http clojuredocs org clojure core clojure core with local vars and with bindings http clojure
  • ASP.NET/ADO.NET:处理 .NET 对象内的许多数据库连接?

    我们有一个 NET 对象 它对数据库进行大量读 写操作 在该对象 或使用它的 ASP 页 的整个生命周期中 它可能会通过查询 更新来访问数据库 1 到 10 次 它不是在每次对象需要访问数据库时打开和关闭数据库连接 而是只是在实例化期间打开
  • 是否有一个 clojure 函数可以“连接”两个地图列表?

    我正在寻找一个类似于sql中的join的连接函数 例如 这是两个地图列表 def a user id 1 name user 1 user id 2 name user 2 def b user id 2 email e 2 user id
  • 在 Clojure 中退出 Recur 循环

    我想跳出下面的循环 并在第 10 行计算结果为 true 时返回最佳最小移动 我查看了 print 语句的输出 当第 10 行的计算结果为 true 时 它 找到了我正在查找的数据 但仍然重复出现 在 Clojure 中 有没有办法在语句计
  • 枚举和 Clojure

    在Java C世界中 人们经常使用枚举 如果我使用的是使用枚举的 Java 库 我可以在它们和关键字之间进行转换 例如 使用 java lang Enum valueOf e aget Ljava lang Enum e getEnumCo
  • PHP 特性 - 定义通用常量

    定义可由命名空间内的多个类使用的常量的最佳方法是什么 我试图避免过多的继承 因此扩展基类不是理想的解决方案 并且我正在努力寻找使用特征的良好解决方案 这在 PHP 5 4 中是否可行 或者应该采取不同的方法 我有以下情况 trait Bas
  • F# 对于 OO 或命令式来说缺少什么? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi

随机推荐

  • 在 Windows 上,使用 cabal 安装的软件包似乎在 ghc/ghci 中不可用

    我在相当标准的 Windows 10 x64 系统上运行最新版本的 Haskell Platform 8 6 3 现在 我正束手无策地从 Hackage 安装软件包以使其可靠地工作 将我的问题归因于本地配置问题 我已采取了所有步骤 但没有破
  • XML 中 setTag(key, value) 的等效项

    我可以使用等价的setTag key 在我的 Android 布局文件中 如下所示
  • 过程需要未提供的参数

    我在访问 SQL Server 中的存储过程时收到错误 Server Error in Application Procedure or function ColumnSeek expects parameter template whic
  • 如何在嵌入式框架中使用 Cocoapods?

    我正在一个新项目中为我的自定义视图使用嵌入式框架 以利用 Xcode 6 中新的 IBDesignable 内容 并且我想使用 Facebook 的 Pop 为所述视图设置动画 我已使用 Cocoapods 将 Pop 添加到项目中 但嵌入
  • 使用golang exec执行docker命令失败

    我正在使用 cmd go 见下文 执行 docker 命令 但失败了 我执行以下步骤来执行并收到以下错误 go build sudo cmd Output docker run v exp a out a out ubuntu 14 04
  • 如何设置本地Python库目录/PYTHONPATH?

    今天在尝试编写一个使用 PIL 的 Python 脚本的过程中 我发现我的本地计算机上似乎没有它 OS X 10 5 8 默认安装 2 5 Python 所以我跑 easy install prefix usr local python p
  • 如何列出可用的密码算法?

    我正在得到一个密码实现Cipher getInstance String algorithm 我的印象是 我可能传递的可用算法名称根据类路径中存在的库而有所不同 我想编写一个简单的程序 可以使用不同的类路径运行 该程序将列出可用的密码算法名
  • (java) - 哈希函数在给定范围内均匀分布字符串?

    所以 我正在寻找一个哈希函数 假设没有输入倾斜 将 最多 16字节的非空字符串 合理地均匀地 分布到一个范围上 0 n where n是用户输入 但不会随时间变化 And我应该能够争论why该函数应该提供 相当均匀 的分布 最后 我所需要的
  • iOS 8:通过 UIAppearance 设置 UITableView 背景颜色

    我习惯于执行以下操作来设置所有实例的样式UITableView BOOL application UIApplication application didFinishLaunchingWithOptions NSDictionary la
  • jQuery JSON 循环嵌套对象

    我目前有这个 getJSON test json function data var items each data function key val items push li val li ul ul class my new list
  • 在 vim 中查找变量的下一次出现

    我想知道是否 如何让 vim 查找下一次出现的变量 假设变量的名称只是 n 那么 n会给我所有出现过的那封信 但这并不总是很有帮助 我想我可以创建一个正则表达式来解决这个问题 但我想知道是否有一些我还不知道的命令 击键 由于我所有的谷歌搜索
  • 以字节为单位读取大文件

    EDIT 根据建议 我已开始实施以下内容 private string Reading string filePath byte buffer new byte 100000 FileStream strm new FileStream f
  • 在Google地图中动态绘制多边形

    我是安卓新手 我一直在尝试将视野应用到谷歌地图中我当前的位置 该图显示了 iOS 中 Google 地图上的 FOV 所以基本上我做了类似的事情 添加了 5 个具有不同 alpha 的三角形 以使整个 fov 成为渐变 我必须根据设备的方位
  • 如何改变下拉列表的宽度?

    我有一个列表框 我想减小它的宽度 这是我的代码
  • Laravel 命令无法在子类中调用 $this->info()

    我刚刚开始学习 PHP 中的 OO 基本概念 Foo php class Foo extends Command public function construct parent construct public function fire
  • 如何使用 jquery 在动态生成的文本区域上自动运行方法?

    我正在使用一个插件 https github com jaz303 jquery grab bag blob master javascripts jquery autogrow textarea js https github com j
  • C++ 内联字符串流

    我想用std stringstream创建格式化字符串 但使用内联类 所以我没有stringstream局部变量到处乱飞 我的意思是这样的 include
  • 使用 PHP 从网页中提取特定数据[重复]

    这个问题在这里已经有答案了 可能的重复 PHP 中的 HTML 抓取 https stackoverflow com questions 34120 html scraping in php 我想知道是否有任何方法可以从网页获取特定的文本字
  • Firestore 规则:resource.data.keys() 不包含读取中的所有字段

    设置 我在 Firebase Firestore 中有一个集合 其中包含以下字段 active created description displayName expires image type uid userName where ex
  • 什么是谓词调度

    我最近看到很多关于 Clojure 中谓词分派的讨论 想知道这件事是否有什么意义 换句话说 什么是谓词分派以及它与泛型函数 OOP 多态性和模式有何不同 谢谢 谓词分派包含泛型函数 OOP 多态性 模式匹配等 一个好的概述是谓词调度 统一的