Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
与#x200B之间的差异;(​;3​;)和Clojure中的3_Clojure_Code Snippets - Fatal编程技术网

与#x200B之间的差异;(​;3​;)和Clojure中的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应用于参数

​我是新来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
应用于参数
bcd


您正在尝试应用
3
,它不是函数,也不能转换为函数。

在lisps括号中表示函数应用,因此:

(a b c d)
表示将
a
应用于参数
bcd

您正在尝试应用
3
,它不是函数,也不能转换为函数。

  • 3
    是文字数字3
  • (3)
    是一个函数应用程序,您试图调用没有参数的函数
    3
    。(没有这样的函数,您似乎无法定义它。)
  • ”(3)
    是一个项目的列表,
    3
    。它与
    (列表3)
    相同,是一个函数应用程序
以下是repl会话:

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)
  • 3
    是文字数字3
  • (3)
    是一个函数应用程序,您试图调用没有参数的函数
    3
    。(没有这样的函数,您似乎无法定义它。)
  • ”(3)
    是一个项目的列表,
    3
    。它与
    (列表3)
    相同,是一个函数应用程序
以下是repl会话:

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不打算停留在那里: