Есть ли способ выразить функциональный оператор/функцию приложения с HANA?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Есть ли способ выразить функциональный оператор/функцию приложения с HANA?

Сообщение Anonymous »

Мой вопрос
Я имею в виду функцию, которая по существу выполняет следующее (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
Просто с подписью, которая обеспечивает соблюдение того, что первый аргумент имеет функцию типа a-> b .
Действительно, применяя 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]
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»