Recursion 对于嵌套分类问题,自递归clojure多重方法是一个好的设计吗?

Recursion 对于嵌套分类问题,自递归clojure多重方法是一个好的设计吗?,recursion,clojure,multimethod,Recursion,Clojure,Multimethod,我有一个大的数据映射序列,每个映射都需要以嵌套的方式进行分类 i、 e.给定项目可以是a或B(由函数确定),如果是B,则可以是C或D(由另一个函数确定),依此类推。在每个阶段,可向每个地图添加更多与分类相关的数据。进行分类的功能本身相当复杂,可能需要引入额外的数据来进行确定 一个自递归的多重方法是一个很好的方法来构造代码来实现这一点吗?我会发送到目前为止为一个项目确定的最具体的类型,或者返回当前最好的分类,当没有什么可以做的时候 我可以在单个分类函数中使用嵌套的ifs获得所需的效果,但天哪,这太

我有一个大的数据映射序列,每个映射都需要以嵌套的方式进行分类

i、 e.给定项目可以是a或B(由函数确定),如果是B,则可以是C或D(由另一个函数确定),依此类推。在每个阶段,可向每个地图添加更多与分类相关的数据。进行分类的功能本身相当复杂,可能需要引入额外的数据来进行确定

一个自递归的多重方法是一个很好的方法来构造代码来实现这一点吗?我会发送到目前为止为一个项目确定的最具体的类型,或者返回当前最好的分类,当没有什么可以做的时候

我可以在单个分类函数中使用嵌套的ifs获得所需的效果,但天哪,这太难看了


多方法在这里合适吗?还是我把事情复杂化了,缺少了一种更简单的代码结构方式?

多方法很好,因为当问题的复杂性需要时,它们允许这种级别的调度。我说,如果它符合你的要求,就去做吧


也许您可以构建一个帮助

的方法,似乎多种方法在这里可能很有用。我想所有的复杂性都在分派功能中?因此,一旦您对顶层进行分类,您就可以使用触发不同实例的更多信息再次触发multimethod


另一种思考方法是以遍历决策树为基础,而不是遍历输入。我想知道使用clojure.zip遍历分类函数树是否是一个有趣的解决方案。每个节点上的分类函数都可以告诉您下一步如何遍历树(要转到哪个子节点)。你不一定需要clojure.zip,但它已经有了树导航。

是的,你的第一段抓住了我当前的想法。至于你的第二个建议,想一想扩大我的视野会很有趣,但肯定看起来并不简单!(-: