问题标签 [clojure]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
15 回答
27614 浏览

macos - Mac OS X 上的 Clojure 编辑器/IDE 建议

我开始学习Clojure编程语言。对 Mac OS X 上的 Clojure 编辑器/IDE 有什么建议吗?

2009-09-23 更新:自从我最初发布这个问题以来,Clojure 空间发生了巨大变化。下面的许多链接,尤其是那些使用 Emacs 引用 clojure-mode 的链接,都已过时。我发现的最好的 Clojure IDE 是最近发布的Enclojure Netbeans 插件 (2009-08-25)。

2010-04-30 更新:关于这个主题的另一篇非常好的文章是Clojure IDEs - Lau B. Jensen 的 The Grand Tour。此外,为了我自己的 clojure 开发,我实际上已经转移到 Emacs / swank-clojure

0 投票
1 回答
2209 浏览

java - 我需要用 Java+OpenGL 构建哪些 Ubuntu/Debian 软件包?

我想使用 JOGL(用于 Clojure,而不是 Java)。JDK 和 OpenGL 绑定的替代方案似乎有很多组合,我不想使用散弹枪方法并堵塞我的机器安装太多杂物。请帮助我开始!

  • 我需要安装哪些 Ubuntu/Debian 软件包?(例如以 开头sun-java6-jdk
  • 似乎没有 JOGL 包,那么安装它的最佳方法是什么?我应该从 CVS HEAD 构建,还是使用预构建的 jar 文件?

我将使用 Emacs 作为我的 IDE,所以我不需要安装 Eclipse 或任何东西,我只需要能够使用 ant 或其他东西进行构建。

请随时修改您的答案(基于其他人的答案)以提供全面的操作方法。

0 投票
5 回答
1573 浏览

database - 失忆症患者的“第一”功能性语言?(我真的很喜欢 Clojure ......)

我最近被诊断出患有级联分离障碍,除了现有的可能的顺行性健忘症病例外,还会导致逆行性健忘症。许多人试图提醒我,我以前是一个多么伟大的程序员——现在我知道了概念和习语,但无论我是否知道,我都想自学。我想我可以部分克服健忘症的问题。

我的问题是,stackoverflow,我最近发现了 Clojure,它......使用起来感觉很好,即使只是从我能找到的任何网页上复制示例。我学习函数式编程语言的目标是创建一个简单的网络服务器、一个 irc AI bot 和一个类似 couchdb 的数据库系统,所有这些都是轻量级的,专门用于教育。Clojure 有哪些缺陷?现在是否有更好的函数式编程语言可用于教育/和/应用程序?

0 投票
19 回答
24822 浏览

clojure - 函数式编程与 Web 开发相关吗?

我最近看到了很多关于函数式编程的内容,而 Clojure 看起来特别有趣。虽然我“理解”它是什么的基本描述,但如果我能的话,我无法弄清楚作为一名 Web 开发人员我将如何在日常工作中使用它。我读过的很多内容都集中在函数式编程的数学方面,而不是常规 OO 中的典型编程情况。

我弄错了棍子的一端吗?函数式编程与 Web 开发完全无关吗?如果没有,是否有任何“用于网络”的示例?

0 投票
12 回答
18058 浏览

database - 将数据库与 Clojure 一起使用

有哪些使用 Clojure 数据库的方法?

我从 Clojure 知道你可以用 Java 做任何你能做的事情,但这意味着我最终可能会使用与 Clojure 简单性相冲突的过于复杂的东西(比如 Hibernate)。有什么建议或意见吗?

0 投票
6 回答
8774 浏览

clojure - Clojure 中的漂亮打印

Clojure 中是否有一个漂亮的打印功能,可以以人类可读的方式输出列表和结构等数据结构?

0 投票
7 回答
1851 浏览

language-agnostic - 重写这个非尾递归函数的好方法是什么?

出于某种原因,我很难想出一种重写此函数的好方法,以便它使用恒定的堆栈空间。大多数关于树递归的在线讨论都是通过使用斐波那契函数并利用该特定问题的属性来作弊的。有没有人对递归的这种“真实世界”(嗯,比斐波那契数列更真实)使用有任何想法?

Clojure是一个有趣的案例,因为它没有尾调用优化,而只有通过“recur”特殊形式的尾递归。它还强烈反对使用可变状态。它确实有许多惰性结构,包括tree-seq,但我看不到它们如何帮助我解决这种情况。谁能分享他们从 C、Scheme、Haskell 或其他编程语言中学到的一些技术?

编辑:根据评论中的要求...

用一般术语重述并使用 Scheme——如何重写以下递归模式,使其不消耗堆栈空间或需要对非自调用进行尾调用优化?

我选择了烦人的名字来说明我正在寻找不依赖于 x、浸渍、frobnicate、f、g 或 h 的代数属性的答案。我只想重写递归。

更新

Rich Hickey为 Clojure添加了一个显式的蹦床函数。

0 投票
14 回答
23745 浏览

functional-programming - 中型 Clojure 示例应用程序?

是否有可以用作“最佳实践”示例的中型 Clojure 示例应用程序,以及查看此类应用程序在代码和代码组织方面的外观的好方法?Web 应用程序对我来说特别有趣,但最重要的是该程序可以做一些通常有用的事情(例如博客、错误跟踪、CMS),而不是我从未在现实中实现过的数学运算世界(解决 N 皇后问题、模拟生活、生成斐波那契数列,以及函数编程语言的常见票价)。

谢谢!

0 投票
2 回答
3220 浏览

java - 从 Clojure 调用 Java

当我尝试在 Clojure 中运行以下代码(来自 REPL)时:

我收到以下错误:

我在这里做错了什么?

0 投票
5 回答
22413 浏览

algorithm - 懒惰地生成排列

我正在寻找一种算法来生成一组排列,这样我就可以在 Clojure 中制作一个惰性列表。即我想遍历一个排列列表,其中每个排列在我请求之前不会计算,并且所有排列不必一次存储在内存中。

或者,我正在寻找一种算法,在给定某个集合的情况下,它将返回该集合的“下一个”排列,这样在它自己的输出上重复调用该函数将循环遍历原始集合的所有排列,在一些顺序(顺序是什么无关紧要)。

有这样的算法吗?我见过的大多数排列生成算法都倾向于一次生成它们(通常是递归的),这不能扩展到非常大的集合。Clojure(或其他函数式语言)中的实现会有所帮助,但我可以从伪代码中弄清楚。