Clojure 中可以创建循环引用吗?

2023-12-27

忽略本机互操作和瞬态,是否可以在 Clojure 中创建任何包含直接循环引用的数据结构?

看起来不可变的数据结构只能包含对自身先前版本的引用。是否有任何 Clojure API 可以创建一个引用自身的新数据结构?

Scheme 具有 letrec 形式,允许创建相互递归的结构 - 但是,据我所知,Clojure 没有类似的东西。

这个问题与将 Clojure 移植到 iOS 相关 - iOS 没有垃圾收集,但有引用计数。


通过将某种形式的引用放入数据结构中,然后更新引用以指向整个结构,您可以非常轻松地创建循环引用。

一个简单的例子:

(def a [(atom nil)])

(reset! (first a) a)

这将创建一个包含一个元素的列表,该元素是指向列表的原子。

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

Clojure 中可以创建循环引用吗? 的相关文章

随机推荐

  • fseek for fd(int fd 而不是 FILE*)

    fd 是否有相当于 fseek 的功能 我已经使用int fds很长时间了 想使用fseek 但我知道没有seek功能 提前致谢 查看 POSIX 函数lseek 2 http linux die net man 2 lseek SYNOP
  • 如何使用情感 CSS 覆盖 React 组件的 CSS?

    下面的例子说明了如何申请background color green to the
  • 如何创建 4 或 8 连接的邻接矩阵

    我一直在寻找一个 python 实现 给定一个数组 它返回 4 或 8 连接的邻接矩阵 我感到惊讶的是 cv2 或 networkx 不包含此功能 我发现了这个很棒的 Matlab执行 https stackoverflow com a 3
  • WCF 并行模拟

    我有一个带有 ImpersonationOption Required 的 WCF 服务 使用并行性时 模拟似乎不会流动 例如 Parallel ForEach items gt results Add SystemUtil Windows
  • F# 中测量单位的模式匹配

    这个功能 let convert v float lt gt match v with float
  • 是否有一种声明式方法将 XML 解析为 Java 对象?

    我正在将 XML 文件的导入函数编写到我的 Java 应用程序中 我在用XOM http xom nu 解析 XML 文件 解析XML的代码并不容易理解 它是一些硬编码的 getChild 3 等等 与声明性 XML 文档相比 很难理解代码
  • 安装了多个.net core SDK(不同版本),我可以只保留最新的吗?

    我最近一直在使用 Visual Studio Community IDE 开发一些应用程序 我刚刚看到我的桌面上安装了多个 NET Core SDK 其次要版本更新略有不同 可能与 Microsoft 推送的 VS 更新一起安装 问题 我可
  • 如何在颤动的滚动视图中将容器或任何其他小部件固定在应用栏下方

    我希望在滚动屏幕时将小部件放置在应用程序下方 屏幕包含一个具有灵活空间的浮动应用程序栏 sliverappbar 其下方是一个具有任何容器或选项卡视图的容器 链接中的视频是我想要的效果的示例 好吧 我想我现在明白你了 您需要实现 Custo
  • 订阅类别流,事件永远不会出现在订阅客户端中

    第一次使用获取事件存储 http geteventstore com阅读文档后 我遇到了一个问题 事件永远不会出现在我的订阅客户端上 由于我错过了一个配置步骤 这是可能的 拥有这个控制台应用程序客户端 public class EventS
  • 是否有 .NET 4.5 相当于:Storagefile.Openasync

    我爱上了异步和等待 但是我无法弄清楚如何在不使用 Task Run 的情况下等待文件打开 似乎有一个WRT 中的 API http msdn microsoft com en us library windows apps windows
  • 错误处理(向客户端发送 ex.Message)

    我有一个 ASP NET Core 1 0 Web API 应用程序 并试图弄清楚如果我的控制器调用的函数出错 如何将异常消息传递给客户端 我尝试了很多东西 但没有任何实现IActionResult 我不明白为什么这不是人们需要的常见东西
  • AWS 上的 Kubernetes PVC 与 ReadWriteMany

    我想在 AWS 上设置 PVC 我需要ReadWriteMany作为访问模式 不幸的是 EBS仅支持ReadWriteOnce 我该如何解决这个问题 我看到 AWS EFS 有一个测试版提供商 它支持ReadWriteMany 但正如所说
  • 如何强制我想要的任何显示分辨率/时间?

    我无法找到一种方法来在我的 C 程序中强制执行我想要的任何显示分辨率 计时 我运行的是带有 GeForce 210 显卡的 Windows 7 我当前实现这些自定义分辨率的方法是使用驱动程序 GUI 手动添加自定义分辨率 然后使用 Wind
  • Eclipse 找不到 std c++ 库

    我有一台Windows8机器 mingw安装在c mingw Eclipse 确实成功编译了程序 但它认为包含错误的行在编译时没有问题 Eclipse 本身没有找到库 当我第一次在 Eclipse 中构建一个安装了 CDT 组件的项目时 它
  • this 指针不能在构造函数中使用别名:

    我正在学习 C 中的继承 我遇到了以下情况陈述 https en cppreference com w cpp language this 换句话说 this 指针不能在构造函数中使用别名 extern struct D d struct
  • 访问 ASP.Net MVC 中的“Application”对象来存储应用程序范围的变量

    如何在 ASP net MVC 中存储应用程序范围内的变量或对象 在常规 ASP 中 您有 Application 对象 显然在 ASP net 中也是如此 我正在使用 ASP net MVC 2 在控制器中 您应该能够执行以下操作 thi
  • 更改 Woocommerce 3 中的订单商品价格

    我需要更改 woocommerce 订单中的商品价格 但我发现的所有内容都是更改购物车中的价格 但这不是我需要的 因为我需要在结帐过程后进行更改 有人可以告诉我如何做到这一点吗 你需要使用新的CRUD 设置器方法 https github
  • 如何将值添加到地图内的集合? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我有这张地图Map
  • 为什么我不能打开一个类,对枚举进行一次隐式转换

    我想知道为什么到枚举值的单个隐式转换的工作方式与转换到系统类型时的工作方式不同 我看不出任何技术原因 但也许比我聪明的人可以为我提供一些启示 以下无法编译 A value of an integral type expected and C
  • Clojure 中可以创建循环引用吗?

    忽略本机互操作和瞬态 是否可以在 Clojure 中创建任何包含直接循环引用的数据结构 看起来不可变的数据结构只能包含对自身先前版本的引用 是否有任何 Clojure API 可以创建一个引用自身的新数据结构 Scheme 具有 letre