由于java implementation(OpenJDK
)和Android的虚拟机DalvikVM都是开源的,因此必须能够在Google的DalvikVM上实现Sun的JavaVM.这样就可以Clojure, Jython
在android上运行基于JVM的应用程序和开箱即用的语言().
是否正在不断努力生成Sun JVM的这种实现?
我有一个我经常使用的函数,它允许我以对我来说更自然的方式编写代码.
infixl 6 $:
($:) :: a -> (a -> b) -> b
a $: f = f a
Run Code Online (Sandbox Code Playgroud)
这让我做了类似的事情
let x = getData
$: sort
$: group
$: aggregate
Run Code Online (Sandbox Code Playgroud)
代替
let x = aggregate
$ group
$ sort
$ getData
Run Code Online (Sandbox Code Playgroud)
我最近了解到Clojure内置了类似的内容(我不太了解Clojure,但我认为它会被写入(-> getData sort group aggregate)
?)这让我想知道Haskell是否也内置了它.但Hoogle 没有任何结果.
是否有包含类似内容的标准库?如果我有这样一个共同的部分是特殊的,它可能使我的代码很难让其他人阅读.
Elixir中的所有不可变数据结构都是持久的吗?如果不是,哪一个是哪个,哪个不是?另外,它们如何与Clojure中的持久数据结构进行比较?
我在另一个构建工具(leiningen for Clojure,但这应该无关紧要)的上下文中使用Maven,我想知道如何调用依赖的插件:build-classpath以编程方式(即通过Maven- API,而不是通过mvn
-command).
我在node.js上实现了自己的Lisp,我可以像这样运行s表达式:
(assert (= 3 (+ 1 2))) (def even? (fn [n] (= 0 (bit-and n 1)))) (assert (even? 4)) (assert (= false (even? 5)))
现在我想添加宏 - defmacro
功能 - 但这是我被卡住的地方.我想知道的宏系统是如何在其他的Lisp实现,但我无法找到许多指针(除了这个和这个).
我看过Clojure宏系统 - 我最熟悉的Lisp - 但这看起来太复杂了,我找不到我可以轻易应用的其他线索(Clojure宏最终编译成不适用的字节码对于javascript,我也无法理解这个macroexpand1
功能.)
所以我的问题是:给定一个没有宏但带有AST的Lisp实现,如何添加像Clojure宏系统这样的宏系统?这个宏系统可以在Lisp中实现,还是在宿主语言的实现中需要额外的功能?
还有一句话:我还没有实现quote
('
)因为我无法弄清楚返回列表中应该包含哪种值.如果它包含AST的元件或类似的对象Symbol
和Keyword
(后者是用于Clojure的情况下)?
c ++中是否存在类似于clojure中的持久性数据结构实现?
在python REPL中我可以做以下事情:
>>> [1,2,3,4]
[1, 2, 3, 4]
>>> sum(_)
10
Run Code Online (Sandbox Code Playgroud)
在clojure REPL中,我可以这样做:
user=> "Hello!"
"Hello!"
user=> *1
"Hello!"
Run Code Online (Sandbox Code Playgroud)
Scala REPL中有类似的东西吗?
Common Lisp中你称之为原子和符号之间有什么区别吗?
这些差异是否扩展到Lisp系列中的其他语言?
(我知道原子在Clojure中有不同的含义,但我对符号的边界感兴趣.)
我想fill-column
在Clojure模式下将Emacs 设置为120,但是保留默认值(80).
我怎么能在我的.emacs
文件中这样做?
谢谢.
clojure ×10
java ×2
android ×1
autofill ×1
c++ ×1
classpath ×1
common-lisp ×1
elixir ×1
emacs ×1
haskell ×1
immutability ×1
jvm ×1
lisp ×1
macros ×1
maven-2 ×1
persistence ×1
scala ×1
scheme ×1
statistics ×1
symbols ×1