面向类型编程/函子
外观
< 面向类型编程
函子是一种类型运算符,它配备了一个名为 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 {} 块中。