嗨,即時通訊對於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. 功能的組合
- 3. 功能的數據類型是SML
- 4. SML:故障追蹤篩功能
- 5. Datomic查詢中的功能組合
- 6. SML中的數組函數
- 7. 組合別名功能
- 8. Riak - 功能聚合組
- 9. 聚合多組序功能
- 10. 組合並數據功能
- 11. 功能組合物與元組參數
- 12. 現有功能的組合是否具有新功能?
- 13. 使用Python的功能組合NumPy
- 14. 修改元組SML
- 15. SML:嚴格的加括號功能類型的方法
- 16. C#Dev Express功能區表單 - 帶組合框的功能區組?
- 17. 將多個功能組合到單個通用功能
- 18. 反相功能組合物(不僅)
- 19. 如何組合多個SASS功能
- 20. 字母組合 - 通過功能
- 21. 如何製作所有功能組合?
- 22. 配合多維數組排序功能
- 23. Foreach並行 - 多輸出組合功能
- 24. 斯卡拉組合功能未終止
- 25. 在拉姆達組合功能
- 26. 斯卡拉功能組合與未來
- 27. 使用MultinomialNB組合功能集
- 28. 使用模板實現組合功能
- 29. MongoDB聚合 - 可能在組功能中有OR操作符?
- 30. 鉛功能組中的Oracle
也就是說OCaml的語法,而不是SML。 – sepp2k 2010-09-24 10:50:53