Я имею в виду функцию, которая по существу выполняет следующее (modulo const и , идеальная пересылка или что-то еще подходит):
auto constexpr dollar = [](auto f, auto x){ return f(x); }; // Why calling it "dollar"? Keep reading...
такая функция выражается только через boost.hana?
Почему я думал об этом?
Код: Выделить всё
$Код: Выделить всё
($) :: forall r a (b :: TYPE r). (a -> b) -> a -> b
f $ x = f x
< /code>
И вы можете написать вторую строку просто как любой из следующих < /p>
(f $) = f
($) f = f
Код: Выделить всё
id :: a -> a
id x = x
Действительно, применяя f к x в Haskell также может быть сделано, написав это
f `id` x
< /code>
i.e. Использование `id` вместо $ .¹
как это связано с Hana? /> Сложная часть
Трудная часть здесь заключается в том, что когда вы пишете f `id` x в Хаскелле, на самом деле не так уж много смысла, когда вы передаете 1 или 2 аргументы ID , потому что все функции по умолчанию currid. Например, я могу сделать это: < /p>
Код: Выделить всё
#include
#include
using boost::hana::id;
int main() {
auto plus1 = [](int x){ return x + 1; };
std::cout
Подробнее здесь: [url]https://stackoverflow.com/questions/67858207/is-there-a-way-to-express-the-function-application-operator-function-with-hana[/url]
Мобильная версия