cpprussia C++ Russia 2020 Мск (29.06.2020 — 02.07.2020)

Как в Haskell: Final Tagless и eDSL на концептах

img

В этом докладе мы будем имплементировать дизайн-подход из Haskell, известный как Final Tagless. Мы рассмотрим, что это такое, и как можно выразить Final Tagless с помощью концептов. Мы построим простой eDSL на FT и обсудим его свойства.

<p>Вместе с C++20 пришла новая языковая функциональность — концепты. И хотя создатели открещиваются от того, что концепты это аналог классов типов, тем не менее некоторые иерархии концептов уж очень похожи на таковые в Haskell.

Концепты — инструмент новый, и практики его использования еще предстоит выработать. Ожидается, что концепты изменят сам стиль разработки на C++, что подтверждается практикой использования классов типов в Haskell. Но что еще можно сделать с помощью концептов, какие идеи стоит рассмотреть?</p> <p>В этом докладе мы будем имплементировать дизайн-подход из Haskell, известный как Final Tagless. Мы рассмотрим, что это такое, и как можно выразить Final Tagless с помощью концептов. Мы построим простой eDSL на FT и обсудим его свойства.</p>