「Scala のパーサー コンビネーター」に関するバーニー ポープのスライドを読んでいました。彼は、「代替」コンビネータのメソッド シグネチャ タイプを引用しています|
。
def | [U >: T](q: => Parser[U]): Parser[U]
そして、「宿題: 代わりにこのタイプがないのはなぜですか?」と尋ねます。
def | [U](q: => Parser[U]): Parser[Either[T,U]]
「Scala のパーサー コンビネーター」に関するバーニー ポープのスライドを読んでいました。彼は、「代替」コンビネータのメソッド シグネチャ タイプを引用しています|
。
def | [U >: T](q: => Parser[U]): Parser[U]
そして、「宿題: 代わりにこのタイプがないのはなぜですか?」と尋ねます。
def | [U](q: => Parser[U]): Parser[Either[T,U]]
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
。