代码进行测试:
import scalaz.{Reader, Applicative}
class ReaderInstanceTest {
type IntReader[A] = Reader[Int, A]
val a = Applicative[({type l[A] = Reader[Int, A]})#l] // fine
val b = Applicative[IntReader]
// ^ ambigous implicit values
// both method kleisliMonadReader ..
// and method kleisliIdMonadReader ..
}
这是关系到Scala的高阶统一的类型构造推断票吗? 如果是这样的(即使不是),你能在这里描述发生的事情在A和B的情况?
你有关于何时使用类型拉姆达以及何时使用一个类型别名,使一切顺利上没有意外的错误从长远来看指引?