Я совершенно новичок в Scala. Сейчас я пытаюсь портировать парсер, который я написал в Standard ML, на Scala и у меня проблема со следующим кодом:
abstract class Token
case class Zero extends Token
case class At extends Token
//...
object Tokenizer {
def tokenize(seq : List[Char]) : List[Token] = seq match {
case List() => error("Empty input")
case '0' :: rest => Zero :: tokenize(rest)
case '@' :: rest => At :: tokenize(rest)
//...
}
}
В SML мне не нужно объявлять тип возвращаемого значения метода tokenize (), но, похоже, Scala нуждается в нем, и он почему-то недоволен предоставленным мною типом (он жалуется на Zero, At - недопустимые типы и что вместо этого они должны быть типа Token). Обратите внимание, что я также хочу, чтобы patten соответствовал списку токенов в более поздний момент времени на этапе синтаксического анализа.
Я провел поиск в Интернете и в самом стековом потоке, чтобы выяснить, не поднимался ли ранее подобный вопрос (это выглядело так тривиально), но почему-то я ничего не смог найти. Я почти уверен, что у меня что-то не так, пожалуйста, просветите меня:)