单子,想弄不懂都很难

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