Хорошие имена для перевернутых версий `lt`,` lte`, `gt` и` gte`?
Я работал в течение некоторого времени над библиотекой Javascript FP под названиемRamdaи у меня небольшая проблема с именами вещей. (Вы слышали старую строчку, верно? «В компьютерных науках есть только две серьезные проблемы: аннулирование кэша, присвоение имен и ошибки« один на один ».)
В этой библиотеке (почти) каждая функция более чем одного параметра автоматически каррируется. И это хорошо работает для большинства случаев использования. Но есть некоторые проблемы с несколькими функциями, которые не являются коммутативными бинарными операторами. Проблема в том, что английские имена часто имеют тенденцию подразумевать нечто иное, чем то, что происходит при применении карри. Например,
var div10 = divide(10);
звуки как это должна быть функция, которая делит свой параметр на 10. Но на самом деле она делит свой параметрв 10, что довольно ясно, если вы посмотрите на определение:
var divide = curry(function(a, b) {
return a / b;
});
Итак, вместо ожидаемого:
div10(50); //=> 5 // NO!!
На самом деле, вы получаете
div10(50); //=> 0.2 // Correct, but surprising!
Мы справляемся с этим, документируя разницу от возможных ожиданий людей и создаваяdivideBy
что простоflip(divide)
а такжеsubtractN
, которыйflip(subtract)
, Но мы не нашли хорошего эквивалента для таких функций, какlt
:
R.lt = curry(function(a, b) {
return a < b;
});
или его кузеныlte
, gt
, а такжеgte
.
Моя собственная интуиция была бы такой
map(lt(5), [8, 6, 7, 5, 3, 0, 9]);
//=> [false, false, false, false, true, true, false]
Но, конечно, это на самом деле возвращает
//=> [true, true, true, false, false, false, true]
Поэтому я хотел бы сделать ту же процедуру для документа и указать альтернативное имя дляlt
и тому подобное. Но я не смог найти хорошее имя. Единственный реальный кандидат былltVal
и это не работает, когда вызывается с обоими аргументами. Мы сделалиобсудить эту проблему, но не было хороших выводов.
Разве другие сталкивались с этим и находили хорошие решения? Или даже если нет, какие-нибудь хорошие предложения для названия для перевернутых версий этих функций?
Обновить
Кто-то предложил, чтобы это было закрыто, потому что «неясно, что вы спрашивали», и я думаю, вопрос действительнобыло потерял немного в объяснении. Простой вопрос:
Какое было бы хорошее, интуитивно понятное имя для перевернутой версииlt
?