var R = require("ramda"); function insert(val, result) { var head = R.head(result); var len = R.length(result); if (len > 0 && val > head) { result = R.insert(0, head, insert(val, R.tail(result))); } else { result = R.insert(0, val, result); } return result; }; function insertionSort(input) { var len = R.length(input); if (len == 0 || len == 1) return input; return insert(R.head(input), insertionSort(R.tail(input))); } console.log('INSERTION SORT:', insertionSort([1, 9, 3, 10, 5, 4, 6, 7, 8, 2]));