Scala 有没有什么特别的原因使这种类型不是通用的DFA?如果是的话,它到底是什么?
我正在整理Scala中的基本结构库,用于生产或个人学习。我的重点是在类型理论、cat理论和集合论中对上述结构的清晰描述。其中一种,Scala 有没有什么特别的原因使这种类型不是通用的DFA?如果是的话,它到底是什么?,scala,haskell,automata,Scala,Haskell,Automata,我正在整理Scala中的基本结构库,用于生产或个人学习。我的重点是在类型理论、cat理论和集合论中对上述结构的清晰描述。其中一种, abstract case class Fold[A, B]() { type I def trans: I => A => I def start: I def output: I => B def cojoin: Fold[A, Fold[A, B]] def copoint: B def dimap[Z
abstract case class Fold[A, B]() {
type I
def trans: I => A => I
def start: I
def output: I => B
def cojoin: Fold[A, Fold[A, B]]
def copoint: B
def dimap[Z, C](f: Z => A, g: B => C): Fold[Z, C]
}
这是我相当确定的同构,
学分:
在我看来,其中一种类型非常类似于DFA,而且
科米特先生基本上也这么说。我的问题是,如果不是DFA,那么这种类型是什么?这种类型不代表DFA,因为它太笼统了。具体来说,I类型可能具有无限多个值。如果你把I做为某种序列,或者更好,两个序列与表示有限状态的东西配对,你可以很容易地直接模拟一个图灵机
abstract case class Fold'[A, B]() {
type W
def MonW: Monoid[W]
def tally: A => W
def summerize: W => B
}