嗨,即時通訊對於SML和編程都很新穎,我想寫一個在列表中結合的函數,這樣 [x1,x2,x3,x4,...] = [(x1, x2),(x3,x4),...]高度讚賞任何提示或幫助我走向正確的方向。SML中的組合功能
3
A
回答
3
通過查看問題,我們很可能會想要一次處理輸入兩個項目。
那麼讓我們來看看我們想要對每對做什麼:如果x1和x2是我們目前正在查看的項目,我們希望將這對(x1, x2)
放入我們創建的列表中。如果xs
是x1
和x2
之後的項目列表,我們希望(x1, x2)
後面跟着「合併」xs的結果。因此,我們可以將我們的組合函數編寫爲:
fun combineWithin (x1::x2::xs) = (x1, x2)::(combineWithin xs)
但是,此定義尚未完成。我們只查看xs
至少有兩個項目的情況。所以我們需要問自己在另外兩種情況下我們想要做什麼。
對於空列表很容易:結合空列表的結果是空列表。
對於只有一個項目的列表,我們可以返回空列表,或者引發錯誤(或者可能將一個項目與自身配對)。換句話說:我們需要決定是否combineWithin [1,2,3]
應返回[(1,2)]
或[(1,2), (3,3)]
或發生錯誤。
如果我們決定,我們希望是前者,我們的函數變爲:
fun combineWithin (x1::x2::xs) = (x1, x2)::(combineWithin xs)
| combineWithin _ = []
-1
let rec pairs = function
| [] -> []
| [x] -> []
| x1::x2::rest -> (x1, x2)::(pairs rest)
相關問題
- 1. SML元組 - 組合
- 2. SML地圖功能
- 3. SML中的標準排序功能?
- 4. 功能的組合
- 5. sml理解函數組合
- 6. 從句的右側不符合功能結果sml
- 7. jQuery - 組合功能
- 8. 功能的數據類型是SML
- 9. Datomic查詢中的功能組合
- 10. 什麼忽略功能做SML
- 11. List.filter功能SML/NJ不工作
- 12. 咖喱功能故障(SML/NJ)
- 13. 如何演繹功能型SML
- 14. SML和功能性編碼風格
- 15. SML:故障追蹤篩功能
- 16. SML問題與功能創建另一個功能
- 17. Riak - 功能聚合組
- 18. Haskell多功能組合
- 19. 斯卡拉功能組合
- 20. 組合CSS文件功能
- 21. 聚合多組序功能
- 22. 球拍組合功能
- 23. 組合別名功能
- 24. 組合並數據功能
- 25. SML中的數組函數
- 26. 功能組合物與元組參數
- 27. 現有功能的組合是否具有新功能?
- 28. 使用Python的功能組合NumPy
- 29. JavaScript:組合類似的功能
- 30. 如何組合父子類的功能?
也就是說OCaml的語法,而不是SML。 – sepp2k 2010-09-24 10:50:53