单子,想弄不懂都很难
C 语言里没有现代程序员热衷于讨论的那些东西。
不过,那些东西不是原本就没有么?
下面我尝试用 C 语言来写一个单子(Monad)。
看下面这段代码:
typedef struct {
void *thing;
} Maybe;
在 C 语言里,这是个结构体,而且是一个似乎很无聊的结构体。这种结构体能用来做什么呢?
可以作为函数的返回值类型。例如:
Maybe foo(void *thing)
{
return (Maybe){.thing =