Хочу анафорический if, который бы делал коньюнкция между операндами и возвращал первый сфейлившийся, плюс который бы анафорично захватывал все значения из операндов
Вот, например:
bool result =
a_if_and<boost::variant<T>, boost::none> (
{msg.getString(v[1]), msg.getString(v[2]), msg.getString(v[3]), msg.getString(v[4])},
// at least one operand == boost::none
[&](unisgned int first_null, const std::tuple<boost::variant<T>, boost::variant<T>, ...> &evalValues) {
std::cerr << "value " << first_null "is bad" << std::endl;
return false;
},
// otherwise
[&](const std::tuple<boost::variant<T>, boost::variant<T>, ...> &evalValues) {
std::cout << "value 0 =" << evalValues.get(0).get<T> << std::endl;
std::cout << "value 1 =" << evalValues.get(1).get<T> << std::endl;
// ...
return true;
});
То есть, a_if_end eval-ит аргументы и каждый на неравенство boost::none.
И в зависимости от этого дергает мою лямбдочку.
Что есть чо похожее? Или я слишком охуел?
@l29ah > C++
бля сорь, это не лисп чтобы без бойлерплейта.
@l29ah олсо, я специально в своих фантазиях не прятал никакой синтаксис за макросами, чтобы пример был максимально понятен.
@mugiseyebrows > msg.getString(v[4])
da ty ohuel
похуй, детали.
@anonymous сорь, не трансгуманист (пока что)
@l29ah а чо на хаскеле (не темлейт хаскеле) так можно?
@l29ah An anaphoric macro is a type of programming macro that deliberately captures some form supplied to the macro which may be referred to by an anaphor (an expression referring to another).
@anonymous чо за нихуя? ты пихаешь в голову if выражение, оно вычисляется и лексически биндится на тело if.
@l29ah
aif (read(fd, buf, size) > 0) {
if (!_aif_arg)
printf ("pizda");
else
printf ("bytes read: %u\n", _aif_arg1);
}
тут read(...) вычисляется один раз, записывается в _aif_arg и к этому _aif_arg можно из тела aif (все что в {})
@anonymous ну кул, накидай язычков, где есть хуйта (плюс минцс), которую я хочу.
@l29ah хуле мне твои факториалы, давай пример с чтением из файлового дескриптора
@anonymous я не хочу в голове
@ninesigns ... в голове if присвавать значения. как ты это кроме как макросом сделаешь?
в языках с call-by-need все более/менее понятно
@l29ah мне в общем-то без разницы как.
do-нотация - это сахарок для манаток.
@anonymous можно, хочу без объявлений в голове if. олсо у тебя приоритет операций
@anonymous http://ideone.com/b0Q9gQ
съеби
@anonymous хуле тебе в /0 не понятно?
@anonymous я хочу хуйнуть в специальный if пачку операндов
сам объявлять переменные куда сохранять результаты вычисления не хочу.
хочу иметь доступ к результатам из тела if.
@kuzy000 aga
@l29ah Не стал
@plhk Бля охуеть ты записал сигнатуру функции
@plhk f - вряд ли будет чистой