 |
Boost.Hana
1.0.1
Your standard library for metaprogramming
|
<hana::lazy>реализует поверхностную лень через монадический интерфейс.
Важно понимать, что лень, реализуемая<lazy>, только поверхностна; только функциональные приложения, сделанные внутри<lazy>монады, могут быть сделаны ленивыми, а не все их подвыражения.
- Note
- The actual representation of
hana::lazy is completely implementation-defined. Lazy values may only be created through hana::make_lazy, and they can be stored in variables using auto, but any other assumption about the representation of hana::lazy<...> should be avoided. In particular, one should not rely on the fact that hana::lazy<...> can be pattern-matched on, because it may be a dependent type.
Modeled concepts
Functor Применение функции над ленивым значением сtransformвозвращает результат применения функции в качестве ленивого значения.intmain() { ] [ORIG_END] -->
Applicative Нормальное значение можно поднять до ленивого значения, используяlift<lazy_tag>. Ленивая функция может быть лениво применена к ленивому значению с помощьюap.
Monad Монадаlazyпозволяет объединять ленивые вычисления в более крупные ленивые вычисления. Обратите внимание, что оператор|может использоваться вместо функцииchain.[название типа [поиск] [поиск] [поиск] [поиск] [поток] [поиск][поток][поток] [поиск][поиск][поиск][поиск][поиск] [[ORIG_END] -->
Comonad Комонадаlazyпозволяет оценивать ленивые вычисления, чтобы получить их результат, и лениво применять функции, принимающие ленивые входы к ленивым значениям. Этот поств блогесодержит более подробную информацию о ленивых оценках и комонадах. |
|