2

「Scala のパーサー コンビネーター」に関するバーニー ポープのスライドを読んでいました。彼は、「代替」コンビネータのメソッド シグネチャ タイプを引用しています|

def | [U >: T](q: => Parser[U]): Parser[U]

そして、「宿題: 代わりにこのタイプがないのはなぜですか?」と尋ねます。

def | [U](q: => Parser[U]): Parser[Either[T,U]]
4

1 に答える 1

1
case class Stooge(name: String)
val moe: Parser[String] = "Moe"
val larry: Parser[String] = "Larry"
val curly: Parser[String] = "Curly"
val shemp: Parser[String] = "Shemp"

val stooge: Parser[Stooge] = (moe | larry | curly | shemp) ^^ { s => Stooge(s) }

{ s => Stooge(s) }ここで、 の代わりに を使用する場合に、 のs: Either[Either[Either[String,String],String],String]代わりに記述する必要があるコードを想像してくださいs: String

于 2009-12-18T20:26:29.050 に答える