与#x200B之间的差异;(;3;)和Clojure中的3
我是新来clo的J乌尔。两者的区别是什么<代码>(3.)代码>和仅与#x200B之间的差异;(;3;)和Clojure中的3,clojure,code-snippets,Clojure,Code Snippets,我是新来clo的J乌尔。两者的区别是什么(3.)和仅3? 如果我做了(3) 我得到一个例外: java.lang.ClassCastException:java.lang.Long不能强制转换为clojure.lang.IFn. 在Clojure中,括号表示函数应用。(3)试图调用名为3的函数,该函数不存在。在Clojure中,括号表示函数应用。(3)正在尝试调用名为3的函数,该函数不存在。在lisps括号中表示函数应用程序,因此: (a b c d) 表示将a应用于参数
3
? 如果我做了(3)
我得到一个例外:
java.lang.ClassCastException:java.lang.Long不能强制转换为clojure.lang.IFn. 在Clojure中,括号表示函数应用。
(3)
试图调用名为3
的函数,该函数不存在。在Clojure中,括号表示函数应用。(3)
正在尝试调用名为3
的函数,该函数不存在。在lisps括号中表示函数应用程序,因此:
(a b c d)
表示将a
应用于参数bcd
您正在尝试应用
3
,它不是函数,也不能转换为函数。在lisps括号中表示函数应用,因此:
(a b c d)
表示将a
应用于参数bcd
您正在尝试应用3
,它不是函数,也不能转换为函数。
是文字数字33
是一个函数应用程序,您试图调用没有参数的函数(3)
。(没有这样的函数,您似乎无法定义它。)3
是一个项目的列表,”(3)
。它与3
相同,是一个函数应用程序(列表3)
repl=> 3
3
repl=> (3)
ClassCastException java.lang.Long cannot be cast to clojure.lang.IFn repl/eval1388 (NO_SOURCE_FILE:1)
repl=> '(3)
(3)
repl=> (list 3)
(3)
repl=> => (defn 3 [] 3)
ClassCastException java.lang.Long cannot be cast to clojure.lang.IObj clojure.core/with-meta (core.clj:211)
是文字数字33
是一个函数应用程序,您试图调用没有参数的函数(3)
。(没有这样的函数,您似乎无法定义它。)3
是一个项目的列表,”(3)
。它与3
相同,是一个函数应用程序(列表3)
repl=> 3
3
repl=> (3)
ClassCastException java.lang.Long cannot be cast to clojure.lang.IFn repl/eval1388 (NO_SOURCE_FILE:1)
repl=> '(3)
(3)
repl=> (list 3)
(3)
repl=> => (defn 3 [] 3)
ClassCastException java.lang.Long cannot be cast to clojure.lang.IObj clojure.core/with-meta (core.clj:211)
当你开始使用Lisp时,你必须习惯于括号是有意义的。你不能仅仅添加更多的括号来消除运算符优先级的歧义——但是,因为所有内容都是前缀形式,所以没有运算符歧义 一旦你习惯了所有的关系都很重要,试着在心里把开头的一项移到右边,例如,
(println“hello”)
变成println(“hello”)
由于该语言非常规则,因此它意味着
(3)
应理解为3()
3
不是一个函数,因此您无法调用它。当您开始使用Lisp时,您必须习惯于括号是有意义的。您不能仅仅添加更多的括号来消除运算符优先级的歧义–但是,由于所有内容都是以前缀形式出现的,因此没有运算符歧义
一旦你习惯了所有的关系都很重要,试着在心里把开头的一项移到右边,例如,(println“hello”)
变成println(“hello”)
由于该语言非常规则,它意味着
(3)
应该被理解为3()
3
不是一个函数,因此您不能调用它。如果您想要的是一个以3作为唯一元素的列表,您需要引用它:”(3)
如果您想要的是一个以3作为唯一元素的列表,您需要引用它:(3)
+回答得好, 但是为什么这样移动括号是有用的呢?重要的一点是符号的规则性(没有优先规则,在宏/元编程中更容易使用),而不是开始部分的位置。在时代的早期,parenthsesis不打算停留在那里:+回答得好, 但是为什么这样移动括号是有用的呢?重要的一点是符号的规则性(没有优先规则,在宏/元编程中更容易使用),而不是开始部分的位置。在时代的早期,parenthsesis不打算停留在那里: