Как определить этот класс в scala
data NestedList a = Elem a | List [NestedList a]
Это в Haskell означает, что NestedList - это тип, который может содержать либо Elem, либо другой NestedList. Можно ли делать подобные рекурсивные определения в scala?
На самом деле это то, что я пытаюсь достичь
Проверьте Проблема 7 здесь на этой странице.
Обновлены ....
Следуя приведенным ниже ответам, я создал классы NestedList
Trait и case для Elem
и NList
.
Пытаясь реализовать flatten
, я застрял здесь ..
def flatten[T](xs: NestedList[T]): List[T] = xs match{
case Elem(xs) => List(xs)
//case NList //have to fill this case
}