Я следую курсу Принципов функционального программирования в Scala, но у меня возникает множество проблем при использовании Scala Worksheets в IntelliJ для проведения быстрых тестов.
Например, я настроил новый проект Scalaгде я создал объект пакета с именем lecture5
(он находится в файле) src/main/scala/lecture5/package.scala
Содержимое файла:
package object lecture5 {
def last[T](xs:List[T]): T = xs match {
case List() => throw new Error("empty list")
case List(x) => x
case x :: y => last(y)
}
/* init should return all elements but last */
def init[T](xs: List[T]): List[T] = xs match {
case List() => throw new Error("List is empty")
case List(x) => List[T]()
case y :: ys => y :: init(ys)
}
def concat[T](xs: List[T], ys: List[T]): List[T] = xs match {
case List() => ys
case z:: zs => z :: concat(zs, ys)
}
}
На рабочем листе у меня есть следующее:
import lecture5._
val x = List("a","b","c")
val xs = List("a","b")
val ys = List("c")
last(x)
init(x)
concat(xs, ys) == x
В настройках рабочего листа я проверил Interactive Mode
, Make project before run
и использую Run Type = REPL
(Plain
почему-то не работает) и Compiler profile = Default
.
Когда я нажимаю кнопку «play
», чтобы запустить рабочий лист, функции init
и last
работают, но для функции concat
появляется ошибка:
Error:(13, 9) not found: value concat
concat(xs, ys) == x
Почемуconcat
не найден?
Обратите внимание, что если я использую консоль Scala из sbt-shell
и выполняю те же команды, то все работает.
Как настроить IntelliJ для работы сРабочий лист без проблем?