Functional programming 将排序向量中的前五十项放入另一个向量(clojure)

Functional programming 将排序向量中的前五十项放入另一个向量(clojure),functional-programming,clojure,Functional Programming,Clojure,已编辑,因为问题与同一程序有关 我试图获取第一个向量中的前50项,并将它们写入top50变量,以返回到其他地方使用 "gets the closest 50 locations in the file fName and writes them out by sending a function to the agent" [fName] (let [sorted (sort-by sortFn (makeStructs fName)) topFifty ;TO

已编辑,因为问题与同一程序有关

我试图获取第一个向量中的前50项,并将它们写入top50变量,以返回到其他地方使用

 "gets the closest 50 locations in the file fName and writes them out by sending a function     to the agent"
  [fName]
  (let [sorted (sort-by sortFn (makeStructs fName))
        topFifty ;TODO take the top 50 from sorted 
        ]

在clojure我该怎么做?我对这门语言不熟悉,从未使用过lisp。我不希望使用for循环,因为它不完全是函数式的。

您可能需要类似于apply struct storeinfo vals的东西,其中vals是拆分的结果。这会将VAL中的所有值解压到对struct storeinfo…(结构存储信息…)的调用中,该调用会根据初始值以与其定义相同的顺序创建一个storeinfo。

要回答新问题,我的另一个答案所回答的问题已被替换:take 50 sorted将返回排序的前50个元素。

谢谢。这个storeinfo结构将被命名为什么,以便我可以在return语句中使用它?此外,我上面的拆分由于某些原因不起作用。每当我运行程序时,都会出现异常。你知道它可能有什么问题吗?我假设你正在尝试分割输入,所以你应该有分割输入,如果它是函数中的最后一个语句,你不需要命名它。如果需要命名,只需按照通常的方式命名:让[my struct apply…”。。。。我不知道你的拆分出了什么问题,虽然你似乎没有把你要拆分的字符串传递给它,所以这是第一个开始。现在你已经删除了你以前的问题,并用另一个问题替换了它,我原来的答案毫无意义。如果你有一个新问题,最好开始一个新问题。@dfan:对不起。过去有人告诉我,当问题是关于同一个项目时,不要开始新的问题。谁告诉你的?我认为你应该忽略它们。这个网站是关于回答编程问题的。如果你对两个不同的问题有两个不同的问题,那么把它们分成两个不同的问题。如果他们关系密切,你可以选择将他们包括在同一个问题中,但可以随意将他们分开。