对这一系列相关问题的某种话语性质提前道歉; 我希望答案对于Clojure的新人来说是一个有用的资源.
我刚刚开始学习Clojure,部分是由于这篇文章的动机.我不是一个专业的开发人员,但我有几十年的编程经验(ARexx,VB/VBScript/VBA,然后Perl和2011年开始的每日使用R).我的平台是Windows 7 64位.我在Java 1.7.0_45 Java Hotspot 64位服务器上使用Emacs 24.3,cider 20131221和Leiningen 2.3.3.我已经购买了Clojure编程和Clojure数据分析手册,并深入研究了两者.我发现它们很有前景,但我迷失在细节中.
显然,要做的是陷入困境并尝试代码练习和小任务,但对我来说,当前的问题一直是构造,组织甚至只是在Clojure中运行项目的复杂性.使用RI可以获得包含大量代码的纯文本文件,可能还有一两个包含大型项目的常用函数的文本.
Clojure 非常不同,没有Java经验,我很难将各个部分拼凑起来.Clojure Programming有一整章关于组织和构建项目,但它是如此全面,反过来我发现现在很难弄清楚与我相关的信息.我想我在Swank上寻找类似这样的答案,但是从那以后这些工具似乎已经开始了.所以这里.
project.clj包含项目定义和依赖项的文件.我想我明白了.我是否可以将此文件用于与定义无关的代码defproject,或者最好不要使用此文件,并将代码本身放在不同的clj文件中?project.clj单独保留文件,那么该文件与其他文件之间的关系如何建立?是否只是clj将项目文件夹中的所有文件都计入项目的一部分?project.clj和main.clj一些辅助功能common.clj-如何将这三个文件之间的关系界定?我可以调用函数,main.clj但是如果/当我将项目打包成uberjar时,项目如何知道main是项目的核心?clj文件,导入函数的最佳方法是什么?我已经阅读过require和use(和import和refer......),但我并不完全理解这两个关键字很难找到.Clojure数据分析手册中的REPL示例通常是选择的use.我发现了一个类似的问题,但它有点过头了.main.clj上面给出的例子中给出一小段代码是一个很好的工作流程?目前我只是main.clj在Emacs中打开文件,做一个M-x cider-jack-in建立REPL,在REPL中进行实验,然后当我想尝试一些东西时,我选择整个缓冲区并Eval region从CIDER菜单中选择(C-c C-R).这个标准操作程序还是完全错误的?clj文件,ns用于定义命名空间.我应该在每个代码文件中明确定义名称空间(在开头)吗?Clojure Programming有一些建议,但我对其他用户的输入感兴趣.com.my-project.foo,那么该命名空间的源代码应该位于com/my_project/foo.clj".(编辑在解释这个有用的答案也和这一个).这种限制永远不会发生在我身上.在命名命名空间和变量方面还有其他问题吗?R经常使用变量名称中的点,但我想在Java连接中通常应避免使用点?src在:source-path.-main函数project.core,但您可以在中指定各种不同的配置project.clj.require是优选的.:use导入命名空间的所有公共,除非您与它一起使用:only.需要让你使用一个别名与整个命名空间:as,但你可以从有同样的效果use与:only使用:refer.请注意,在ClojureScript :use没有:only根本不准.C-c C-k重新加载缓冲区的整个文件.如果您发现自己在REPL中输入了太多表单,而宁愿在单独的缓冲区中编辑它们https://www.refheap.com/22235.myproject.parse,myproject.interpret,过myproject.parser,myproject.interpreter等等.但是,这是个人风格问题.编辑:是的,通过文件名和ns源文件开头的表单明确定义命名空间的命名.有多个源文件定义一个名称空间是不寻常的.我喜欢你的"担心"方法.你(希望)会发现Clojure,特别是Leiningen在这些问题上几乎没有废话.
关于REPL的使用:我在@Mars的回答中看到了你想要以一种可以重复使用你输入内容的方式使用REPL的评论.两件事情:
C-x C-.在clj文件中使用将表单粘贴到nrepl中并进行评估.安装说明位于链接处(您的.emacs文件通常位于主目录中).| 归档时间: |
|
| 查看次数: |
751 次 |
| 最近记录: |