 |
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 позволяет оценивать ленивые вычисления, чтобы получить их результат, и лениво применять функции, принимающие ленивые входы к ленивым значениям. Этот поств блогесодержит более подробную информацию о ленивых оценках и комонадах. |
|