我是Clojure的新手.如果这是一个愚蠢的问题,请道歉!
每次我不关心项目的顺序时,我应该使用集合而不是向量或列表吗?在没有必要订购时,在这三者之间做出决定的共同标准是什么?
与必须编写自己的访问器函数相比,记录语法似乎非常方便.我从来没有见过任何关于何时最好使用记录语法而非正常数据声明语法的指南,所以我在这里问一下.
pprint的文档有点像砖墙.如果你打印一张地图,它会出现在一行上,如下所示:{:a "b", :b "c", :d "e"}.相反,我想像这样打印,可选择使用逗号:
{:a "b"
:b "c"
:d "e"}
Run Code Online (Sandbox Code Playgroud)
如何用pprint做到这一点?
我已经注意到,随着时间的推移,Clojure用户对这种语言只有极大的热情.然而,似乎大多数Scala用户甚至都不太关心这种语言.有些人告诉我"这比使用Java更好." 我不确定为什么Clojure对此有如此多的热情,但Scala几乎没有.它破坏了我必须学习语言的任何动机.我并不关心语言的使用"因为它比使用Java更好." 你怎么看?我对Scala的了解还不足以衡量人气随着时间的推移增加或减少的程度.你对这门语言有什么看法?我特别感兴趣的是听到使用该语言的人的意见.
谢谢.
编辑:显然这篇文章比我想要的更具攻击性.我不是要试图说明任何一种语言,也不是说Scala没有背后的人.我只是说,随着时间的推移,在我看来,较少的人对Scala充满热情,因为他们和Clojure在一起.我并没有做出"不合理的假设"或者"在辩论中做出蠢事"我只是在寻求理论.
如果我知道这会引起很多争议,我甚至不会写出这个帖子.我为任何误解而道歉.我会持续想指出的是,我做的像Scala和Clojure的.我在说话的时候正在学习Scala.感谢您的帖子,至少有理论的部分.
编辑:9月30日:我确实为我所获得的任何敌意道歉.这个问题被误解了.我喜欢Scala,并认为它是一种令人惊叹的语言.我是根据自己的观察发言的,看来我自己的观察结果显然是错误的.欢迎你继续投票这个问题,但是如果我有能力的话我会删除它,但我不是.
例如,当您通过CxCf打开文件时,您可以选择完整的文件名,如果有多个可能的完成,它将弹出一个包含可能的完成列表的完成缓冲区.问题是,在您打开文件后,缓冲区所处的窗口切换回正常,但它没有关闭.有没有什么办法可以让文件打开后自动关闭这些缓冲区?
我有一个功能:
test :: String -> State String String
test x =
get >>= \test ->
let test' = x ++ test in
put test' >>
get >>= \test2 -> put (test2 ++ x) >>
return "test"
Run Code Online (Sandbox Code Playgroud)
我几乎可以理解整个函数中发生了什么,并且我开始得到monad的支持.我不明白的是,当我这样做时:
runState (test "testy") "testtest"
Run Code Online (Sandbox Code Playgroud)
'test'中的'get'函数以某种方式获得初始状态"testtest".有人可以打破这个并向我解释一下吗?
我感谢任何回应!
我想知道在Scala中格式化字符串的最佳方法是什么.我正在重新实现类的toString方法,它是一个相当长而复杂的字符串.我想过使用String.format,但它似乎与Scala有问题.这样做是否有本机Scala功能?
以下哪项技术易于学习,有趣于开发网站?如果你只能选择一个,那就是它
我一直想把这个问题想象一下.
(defn is-decimal [astr]
(if (. astr (indexOf (int \.)))
(Double/parseDouble astr)
(Integer/parseInt astr)))
Run Code Online (Sandbox Code Playgroud)
这就是我写的功能.is-decimal或者传递诸如"2.5"或"5"之类的东西或类似的东西,但它总是使用if第二个参数,而不是第三个参数.我(. astr (indexOf (int \.)))在REPL中测试过,它看起来工作正常,它在失败时返回-1,而在它失败时返回1.我相信这可能是问题所在.-1在Clojure中并不意味着错误.谁能想到解决这个问题的方法?
提前致谢.
编辑:谢谢你的帮助.在我写完之后,我有了一个主意.我编写了一个检查1和-1的谓词函数.正是我需要的.醒来后我不应该直接编码:
tick :: State Int Int
tick = get >>= \n ->
put (n+1) >>= \y ->
return n
Run Code Online (Sandbox Code Playgroud)
我put (n+1)对这个功能的最终结果有什么影响感到困惑.似乎这个函数应该返回初始状态不变.我想在脑海中试图解决这个问题,但是我一直没有足够的空间把东西拿到位.:\
如果有人可以引导我完成对此功能的评估,那将非常有帮助.