面向类型编程/函子
外观
< 面向类型编程
函子是一种类型运算符,它配备了一个名为 map
的方法,声明如下
type Functor[T] { func map[U](f Func[T,U]) Self[U] }
map
方法必须满足一些形式要求,我们现在忽略这些要求。重要的是,map
接受一个类型为 Func[T,U]
的函数(其中 U
是方法的类型参数),并返回一个类型为 Self[U]
的实例,即相同但可能具有不同类型参数的函子。您已经遇到了 Maybe
函子
type Maybe[T] : Functor[T] { property val T func map[U](f Func[T,U]) Self[U] { return new Self[U] { val = self.val.isNil() ? nil : f(self.val) } } func description() String { return self.val.isNil() ? "none" : self.val.description() } }
在下一节中,我们将使用 Maybe
来解释什么是单子以及如何实现泛型 Monad
类型。
注意:伪代码可以使用 Funcy 应用程序进行尝试,该应用程序可以从 Apple App Store (iOS/macOS)、Google Play (Android) 或 Amazon Appstore 免费下载。要执行的代码必须放在 main {}
块中。