类型构造器-Functor[F[_]]

类型构造是抽象类型或高阶类型实例化的过程;

类型构造器是任意输入一个或几个已有类型,能够生成新类型的类型;

 

https://www.cnblogs.com/feng9exe/p/9925027.html

 

Type constructors

Essentially what HKT gives us is the ability to generalize across type constructors – where a type constructor is anything that has a type parameter. For instance List[_]* is not a type, the underscore is a hole into which another type may be plugged, constructing a complete type. List[String] and List[Int] being examples of complete (or distinct) types.

 

https://www.cnblogs.com/feng9exe/p/9156277.html

 

 

a type constructor is a feature of a typed formal language that builds new types from old ones.

 

https://en.wikipedia.org/wiki/Type_constructor

 

trait Functor[F[_]] {

 def map[A, B](a: F[A])(f: A => B): F[B]

}

 

class Functor f where

  fmap :: (a -> b) -> f a -> f b

由 f a 和 f b 我们可知,f 不是类型,而是类型构造器(type constructor),即 f 应接受另一类型作为参数并返回一个具体的类型(更精准的表达则是 f 的 kind 必须是 * -> *)。

 

 

函数作为参数或作为返回值的函数称为 高阶函数。在Scala的immutable.List.的方法中存在大量的高阶函数,我们看看其中一个map方法

class List[+A] ... {

  def map[B](f: A => B) : List[B]

}

 

https://my.oschina.net/Barudisshu/blog/472564

 

posted @ 2019-03-01 15:35  zzfx  阅读(244)  评论(0编辑  收藏  举报