В императивном программировании мы обычно имеем код, который выглядит следующим образом:
func addOneToSlice(xs []int) []int { rs := make([]int, len(xs)) for i, value := range xs { rs[i] = value 1 } return rs }
Однако обратите внимание на следующее в цикле for:
Сравните, как та же задача будет решена в F#:
let rec addOneToList = function | [] -> [] | x :: xs -> x 1 :: addOneToList xs
Теперь рассмотрим следующее:
Учитывая эти ограничения, добавление 1 к любому элементу y, не находящемуся в начале списка, значительно изменит структуру нашей функции.
Теперь сравните ход вычислений в обоих стилях:
В функциональном стиле сочетание обеих возможностей с вычислительным прогрессом имеет следующие последствия:
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3