如何在 IntelliJ 中调试 Clojure 文件?

2024-01-20

第5行不能设置断点,其中包含[x].

IntelliJ 不会让我这样做。我使用了不同的插件,例如拉克洛胡尔 https://github.com/JetBrains/la-clojure/ and Cursive https://cursiveclojure.com/。两者都停在 3 号线而不是 5 号线。

那么,人们如何进入 Clojure 中的代码呢?

有任何语法建议或可能有帮助的工具吗?

(defn flattenlist
  ([x & more]
    (concat (if (vector? x)
              (apply flattenlist x)
              [x]
            )
            (if (= more nil)
              nil
              (apply flattenlist more))))
  )
(flattenlist [[1 [[2]]] 3 [4 5] 6])

首先,按照惯例,所有尾随括号都在同一行,如下所示:

(defn flattenlist
  ([x & more]
   (println x)
   (concat (if (vector? x)
             (apply flattenlist x)
             [x])
           (if (= more nil)
             nil
             (apply flattenlist more)))))

(flattenlist [[1 [[2]]] 3 [4 5] 6])

其次,当您使用可组合函数时,很容易插入 println 并运行/测试该函数,因为它是引用透明的。我只是一名 Clojure 爱好者,但我通常使用 printlns 和单元测试进行调试。使用断点并不是那么可靠。

如果你真的想要类似于设置断点的东西,你可以尝试使用这个调试宏 https://coderwall.com/p/xayyvq(不是我的)。

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

如何在 IntelliJ 中调试 Clojure 文件? 的相关文章

随机推荐

  • 在 iOS 上从内存数据流播放音频

    我正在将音频库移植到 iOS 允许播放回调提供的音频流 用户提供返回原始 PCM 数据的回调 我需要播放该数据 此外 该库必须能够同时播放多个流 我想我需要使用 AVFoundation 但似乎 AVAudioPlayer 不支持流式音频缓
  • 使用 hibernate 事件侦听器更新其他实体中的非规范化值

    我们有一个基于休眠的应用程序 该应用程序已经使用拦截器来触发审计跟踪的创建 它通过挂钩 beforeTransactionComplete 机制来实现此目的 将每个实体的最终状态复制到审核表中 所有实体都有一个版本号 当发生更改时该版本号会
  • Android:File() 的资产文件夹路径?

    我的项目的资产文件夹中有一些文件 我想列出它们 所以我将其放入我的代码中 File dir new File com packagename assets fonts File fileList dir listFiles 我应该采取哪条路
  • Selenium WebDriver 默认使用什么配置文件?

    Selenium WebDriver 又名 Selenium 2 从哪里获取打开 FirefoxDriver 时使用的匿名配置文件 如果它使用 Firefox 的默认值 appdata roaming mozilla firefox pro
  • 如何在 linq to xml 中交换两个 XML 元素

    我想交换两个 xml 元素 我该怎么做呢 这是代码 我尝试了解决方案here https stackoverflow com questions 3695806 linq to xml what is the most effective
  • 在Django中引用View/Template中的多个Model

    我正在使用 Python Django 迈出第一步 并在一个 Django 项目中编写了一个包含多个 Django 应用程序的示例应用程序 现在我添加了另一个名为 仪表板 的应用程序 我想在其中显示来自不同应用程序的数据 目前我仍然使用这个
  • 如何在Windows中使用pygame打开相机?

    我想在 Windows 7 机器上使用 pygame 模块用 Python 打开相机 但它不起作用 我以前用过 dev video0 这是Linux中的读取设备 pygame 文档仅展示了如何在 Linux 中打开相机设备 我使用的是 py
  • 在 React 中测试 API 调用 - 状态未更新

    我想测试组件中的 API 调用后我的状态是否更新 我有一个方法可以说method1 在该方法中 它调用fetch并将状态设置为结果 方法如下 method1 gt if this state state1 fetch api then re
  • 使用 URL 参数自动填充表单并自动提交

    我想使用 URL 参数自动填充以下表单 例如使用如下 URL example co uk example php acct wirelesslogicde pwd jenkins 如果可能的话 我也希望自动提交 我该怎么做
  • 如何判断TBucketList的桶数

    我一直在使用 TBucketList 和 TObjectBucketList 来满足我的所有哈希需求 但从未尝试过切换存储桶的数量 我隐约记得这在数据结构类中意味着什么 但是有人可以详细说明 Delphi 中这个特定类的细微差别吗 The
  • 是否保证handle_info在超时0的情况下在init之后立即执行?

    我收到一个奇怪的错误报告 这让我认为在 gen server 初始化之前正在执行一些调用 这是初始化代码 init ResourceId gt process flag trap exit true ok not initialized R
  • 如何使用任何库在Python中将RTF字符串转换为纯文本[重复]

    这个问题在这里已经有答案了 我想在不使用正则表达式的情况下将 rtf 字符串转换为纯文本 rtfstring rtf1 ansi ansicpg1252 deff0 deflang1033 fonttbl f0 Arial colortbl
  • 如何使用curl 通过代理模拟来自Firefox 的请求?

    特别是 当我将 Firefox 设置为使用 https 流量代理时 我尝试复制 Firefox 的行为 根据我的测试 Firefox 似乎向代理发送 CONNECT 请求 而以下curl 命令直接向代理发送 GET curl proxy b
  • 将列表框的选定值显示为标签 - 多个值

    我有一个名为 lstPTLNameDHOD 的列表框 其中有多个 PTL 名称 可以使用 Ctrl 键选择这些名称 我想在标签中显示选定的姓名 或者以某种方式显示提交表单的人可以看到他们提交表单的确切对象 我的问题是我只能在标签上显示一个名
  • Python:使用另一个大字典更新一个大字典

    我正在尝试使用另一个字典中的值来更新大型字典的某些值 其中它们具有相似的键 相同的日期但格式不同 我当前使用的流程太慢 我想减少瓶颈 这是我当前的解决方案 它将更新的字典写入文件 from dateutil import parser Fi
  • 在 Node.js 中共享对象并避免全局变量

    在下面的代码片段中共享数据库连接的最合适的方式是什么 db变量 与我的路由器 控制器 无需转动db变量变成全局变量 var mongo require mongoskin db mongo db config db adress app u
  • 使用 Akka 以编程方式获取临时端口

    如果我在 Akka 中将 ActorSystem 配置为使用临时 tcp 端口 更具体地说 我将 http 端口配置为 0 有没有办法在 ActorSystem 启动后以编程方式获取此端口 任何使用 actorOf 创建 Actor 的尝试
  • 如何找到 3 个数组的交集,同时忽略空数组?

    我必须找到 3 个整数数组的交集元素 有条件地说a b c 如果数组中的任何一个为 null 只需忽略该数组并找到剩余数组的交集 如果三个都为 null 则返回 提前致谢 ps 红宝石1 9 3 一种方法是这样的 a b c tap a a
  • Docker 编写安装requirements.txt

    在我的 docker 镜像中 我正在克隆 git master 分支来检索代码 我使用 docker compose 作为开发环境 并使用卷运行容器 我在从 python requests txt 文件安装新项目需求时遇到了问题 在开发环境
  • 如何在 IntelliJ 中调试 Clojure 文件?

    第5行不能设置断点 其中包含 x IntelliJ 不会让我这样做 我使用了不同的插件 例如拉克洛胡尔 https github com JetBrains la clojure and Cursive https cursivecloju