Эй, я очень новый для SML и программирования alltogether, я хочу написать функцию, которая объединяется в списки, такие как [x1, x2, x3, x4, ...] = [(x1, x2), (x3, x4), ...] Любые подсказки или помощь для меня в правильном направлении высоко оценены.Комбинированная функция в SML
ответ
Рассмотрев проблему, выясняется, что мы, вероятно, захотим обработать входные данные по двум элементам одновременно.
Итак, давайте посмотрим, что мы хотим делать с каждой парой: Если 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 _ = []
let rec pairs = function
| [] -> []
| [x] -> []
| x1::x2::rest -> (x1, x2)::(pairs rest)
- 1. Комбинированная функция данных
- 2. Рекурсивная функция в SML
- 3. Функция массива в SML
- 4. Накопительная функция Curried (SML)
- 5. SML карта функция
- 6. Рекурсивно вызывающая функция SML
- 7. Комбинированная функция пришла из ownProps в mapDispatchToProps
- 8. Комбинированная стандартная функция ошибки в R
- 9. Функция сокращения двоичного дерева SML
- 10. SML: функция с несколькими выходами
- 11. функция член в SML с foldl
- 12. Обобщенная функция список печати в SML
- 13. Функция Curried для вычисления уравнения в SML
- 14. функция SML для удаления элементов в списке
- 15. Функция поиска таблицы Hash в SML
- 16. Проверьте, определена ли функция в SML
- 17. функция List.filter не работает в SML/NJ
- 18. Комбинированная связь
- 19. Комбинированная функция для fprintf и запись в c/C++
- 20. Комбинированная коробка не заполняется
- 21. SML - Рекурсивная функция для строки списка
- 22. Почему эта функция SML возвращает синтаксическую ошибку?
- 23. Использование Char.chr в SML
- 24. бесконечная последовательность в SML
- 25. Исключение компилируется в SML
- 26. TAKE в SML
- 27. функции прототипирования в SML
- 28. Значение привязок в SML?
- 29. Обработка кортежей в SML
- 30. Объявление функции в SML?
Это OCaml синтаксис, не SML. – sepp2k