什么是谓词调度

2024-04-12

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


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

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

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

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

  • 如何将扩展泛型类的实体转换为扩展另一个泛型类的另一个实体

    我正在开发一个面向服务的平台 用于从数据库检索 创建和更新实体 这里的要点是每个 Java 实体都扩展AbstractEntity 例如 我有 MyCar extends AbstractEntity implements Serializ
  • Clojure 的映射和减少 Monad...Juxt Monad 怎么样?

    在学习 Clojure 的过程中 我花了很长时间试图理解 monad 它们是什么以及我们如何使用它们 但没有取得太大成功 然而 我发现了一个很棒的 Monads for Dummies 视频系列 http vimeo com 2071730
  • 我担心我添加了太多接口

    我正在构建我的领域模型并继续重构它 正如我所做的那样 我发现我喜欢接口 因为它允许我根据接口为具体类型创建可重用的方法 控制器 视图 但是 我发现每次向域实体之一添加新属性时 我都会创建一个接口 例如 我有一个会员状态从抽象继承的对象Ent
  • 为什么 java.util.Scanner 类被声明为“final”?

    我用扫描仪类 http docs oracle com javase 6 docs api java util Scanner html用于读取多个相似的文件 我想扩展它以确保它们都使用相同的分隔符我还可以添加类似的方法跳过直到你找到 字符
  • 在VBA中使用类模块作为命名空间是否有任何陷阱

    VBA 不支持命名空间 Java 人员的包 其他语言中的命名空间有助于避免歧义并补充成员名称自动完成等工具 在 VBA 中模拟命名空间的一种方法是在类模块中声明什么是事实上的静态方法 然后在标准模块中声明该类的默认实例 这甚至是一些 Mic
  • 关联数组与 SplObjectStorage

    我正在编写代码来管理一组独特的对象 该代码的第一个原型使用关联数组 基本上就像我一直这样做的方式一样 然而 我也热衷于利用 PHP 的更现代版本中添加的功能 例如 SplObjectStorage 1 这样做 部分是作为一种学习经验 部分是
  • clojure - 不同命名空间中的评估代码

    我正在编写类似 REPL Server 的代码 用户的请求在这样的函数中评估 defn execute request str try eval read string request catch Exception e getLocali
  • 为什么必须使用“out”而不是ref?

    我写了一些关于 ref out 声明的代码块 我认为 ref 最有用 好的 为什么我需要用完 我每次都可以使用always ref namespace out ref class Program static void Main strin
  • 将嵌套映射分解为键值对

    我想将 Clojure 中的嵌套映射分解为一系列键值对 例如 我们有这张地图 a b c d e f g h i j 分解后的地图应如下所示 a b c d e f g h i j d e f g h e f g h i j 输出的顺序并不
  • 如何从继承的方法中获取派生类的路径?

    如何从继承的方法中获取当前类的路径 我有以下内容 and
  • 全局常量是反模式吗?

    我一直认为仅仅为了保持常量而创建一个类是一个糟糕的设计 但最近 我尝试用谷歌搜索它 发现只有一个界面作为常量是不好的反模式 没有提到使用一类常量 我认为 由于常量类实际上与全局变量没有太大区别 这就是我反对它并倾向于重构此类类的原因 它创建
  • 这是重载,不同类中具有相同名称和不同签名的方法吗?

    如果我有以下 Java 代码 class A public int add int a int b return a b class B extends A public float add float a float b return a
  • 从 QueryDSL 谓词对象中获取参数

    我使用带有 Spring REST 端点的 QueryDSL 谓词对象来检索和查询参数值 GetMapping subjectId students RolesAllowed Roles PLATFORM ADMIN Roles USER
  • 如何重载泛型方法以使其在 Typescript 中不那么泛型?

    我在抽象类中有一个通用静态方法 abstract class Base static find
  • Clojure:对于 n 维

    Clojure 中的函数for可用于迭代嵌套序列 想象一个具有 x y 和 z 轴的 3D 空间 for x range 10 y range 5 z range 2 x y z 上面的代码将生成一个向量序列 表示长方体内所有可能的位置 当
  • 抽象类、接口、mixins

    有人可以向我解释一下两者之间的区别吗抽象类 接口 and mixins 我之前在代码中使用过它们 但我不知道技术差异 抽象类 抽象类是不被设计为实例化的类 抽象类可以没有实现 部分实现或全部实现 抽象类旨在允许其子类共享公共 默认 实现 抽
  • 如何将 clojure Web 应用程序部署到 Amazon EC2(AWS Elastic Beanstalk + Leiningen + Compojure + Ring + Tomcat)

    如题 我的IDE是intellij idea 12 1 4 我需要什么工具包或插件才能 将 Clojure Web 应用程序部署到 Amazon EC2 有任何链接或参考或分步解决方案吗 谢谢 如果您只是部署一个 war 文件 没有其他自定
  • 在Python中将字典转换为以键作为对象名称的对象

    我有一本这样的字典 d item1 Hi 150 495 item2 Hola 590 40 我想将其转换为对象 如果可能的话递归地 我有一堂课 class Item def init self thetuple self greeting
  • 覆盖默认标识符生成策略对关联没有影响

    交响乐 2 7 2 学说 ORM 2 4 7 MySQL 5 6 12 PHP 5 5 0 我有一个具有自定义 ID 生成器策略的实体 它工作完美 在某些情况下 我必须使用 手工制作 的 ID 来覆盖此策略 当主实体在没有关联的情况下被刷新
  • 如何在 REPL 中显示 Clojure 中函数的定义?

    我正在寻找让 REPL 打印函数当前定义的能力 有什么办法可以做到这一点吗 例如 给定 defn foo if true true 我想说类似的话 print definition foo 并得到一些类似的东西 foo if true tr

随机推荐

  • 在 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 多态性 模式匹配等 一个好的概述是谓词调度 统一的