2013-08-31 34 views
6

我該如何在Clojure中重寫這段Ruby代碼?如何在Clojure中編寫Ruby的each_cons?

seq = [1, 2, 3, 4, 5].each_cons(2) 
#=> lazy Enumerable of pairs 
seq.to_a 
=> [[1, 2], [2, 3], [3, 4], [4, 5]] 

的Clojure:

(??? 2 [1 2 3 4 5]) 
;=> lazy seq of [1 2] [2 3] [3 4] [4 5] 
+0

BTW,@fujy,當我加'紅寶石標籤類似的情況下,這個問題http://stackoverflow.com/questions/18072261/how-to-rewrite-rubys-arrayx-in-clojure?rq=1,@sawa刪除它。我傾向於同意他的觀點。這不是關於Ruby的問題,這是關於Clojure的問題。 – DNNX

+2

是的,我同意你的意見,這不是關於'ruby'的問題。但是,我認爲能夠回答的人應該瞭解'ruby'代碼。 – fujy

回答

9

你所要求超過一個懶惰sequence.This方式稱爲sliding window你可以做到這一點

user=> (partition 2 1 [1 2 3 4 5]) 
((1 2) (2 3) (3 4) (4 5)) 
+0

你能寫出完整的代碼嗎?我想看看輸出.. –

+0

閱讀分區功能文檔時,我應該多加註意。謝謝! – DNNX

+0

@DNNX我也沒有:) –

相關問題