首页 > 解决方案 > std::unique_ptr 可以被认为是一个单子吗?

问题描述

我目前正试图将我的头包裹在单子上。不幸的是,大多数关于该主题的文章都使用 Haskell 没有正确解释符号。然而,由于我主要使用 C++ 进行编程,所以我想在不学习新的编程语言的情况下理解 monad...

根据我在网上收集的信息,monadM是 type 的类型构造函数T,它至少提供以下操作:

将这些标准应用于 C++,在我看来,这std::unique_ptr可以被视为一个单子。这是真的?


我的推理如下:

std::unique_ptr模板用于构造实际类型,因此std::unique_ptr<T>

您是否同意,或者对组合器的operator*()/调用是否会.get()取消std::unique_ptr成为 monad 的资格?


我明白了,std::unique_ptr用作 monad 可能没有意义,因为它带有所有者语义。我只是想知道,如果它是一个。

标签: c++functional-programmingmonads

解决方案



推荐阅读