Согласно дубликату, который я прокомментировал, вы должны попробовать:
class IsAtLeastOneElementList extends ArgumentMatcher<List<String>> {
public boolean matches(Object list) {
return ((List) list).size() > 0;
}
}
Если Вы действительно хотите изучить, как думать функциональным способом, Haskell является определенно правильным выбором. Примерно любой язык там позволяет Вам проскользнуть в обязательный стиль слишком легко. Haskell вынудит Вас в функциональное мышление. Я нашел это необходимым при изучении. (Вы можете, конечно, более дисциплинироваться, чем я, конечно, но почему нажатие Ваша удача?)
Когда Вы удовлетворены тем, что Вы изучили от Haskell (который будет много!), Вы установлены выйти и оценить более либеральные функциональные языки как Clojure или Scala. Или можно остаться с Haskell, ситуация библиотеки которого не на самом деле все это плохо, также. В той точке это - вопрос обстоятельства и персонального предпочтения. Но для совершения такого выбора, учась, как думать “чистым” функциональным способом, сначала, я думаю, жизненно важный.
Выезд F#. CLR имеет .tail инструкцию, таким образом, можно написать код F# с последними вызовами, которые не вызывают StackOverflow (исключение, не веб-сайт). Вот вводное видео о F# от PDC.
Никаким путем не является Scala, собирающийся изогнуть Ваш ум в какой-либо степени так, как Haskell будет. Главная причина выбрать Scala over Haskell при изучении FP состоит в том, чтобы дать себе более нежное введение в опасные дебри монад, функторов и совершенства высшего порядка. Scala является великим, если Вы происходите из объектно-ориентированной среды, пытающейся переходить то знание в функциональную землю. Не настолько замечательно, если Вы хотите просто погрузиться головой вперед в глубину.
Учитывая то, что Вы спрашиваете, я рекомендовал бы Haskell GHC. Ничто не собирается деформировать Вашу голову вполне так очень.:-) После этих слов, хотя, я думаю, что необходимо все еще следить за Scala. Существует много аспектов языка, которые являются положительно специфическими, особенно его система типов (structural+nominal выделяющий подтипы == сладкий). Это не собирается повреждать Вашу голову вполне так как Haskell, но это даст Вам понимание некоторых понятий, которые Вы не можете найти больше нигде, особенно так называемое "typeful программирование" методологии.
О, и ответить на вторую часть Вашего вопроса (FP по сравнению с OO в Scala), я склонен писать свой код в функциональном стиле в объектно-ориентированной платформе. Немного трудно описать, но это - способ, которым это. Думайте о нем как разработка API с объектно-ориентированной точки зрения, но реализации всего в функциональном стиле. Я сохраняю вещи неизменными и провожу много времени с помощью методов высшего порядка, но я делаю все это в рамках ограничений наследования и стандартного номинального выделения подтипов. Время от времени я все еще запишу что-то обязательное, но только когда это будет более чисто, чтобы сделать так, чем использовать функциональный стиль.
Другими словами, Haskell бросит вызов моим предвзятым мнениям тяжелее и быстрее, чем Scala?
Да.
Если Вы действительно хотите учиться, добраться далеко вне Вашей зоны комфорта.
Вы действительно собираетесь использовать Scala для производственного кода за следующие 3 месяца, так или иначе?
Взгляд на Scala. Это предназначается для JVM, взаимодействует с Java и имеет много современных функций функционального программирования.
когда-нибудь испытанный Пролог?... это будет
?- bend(your_mind).
Yes
?- bend(X).
X = your_mind
Это дало мне совершенно новую перспективу так или иначе... много информация там
Я люблю использовать Haskell и GHC. GHC включает интерактивный интерпретатор (GHCI) и имеет замечательно полезные сообщения об ошибках. Плюс Haskell один из лучших примеров действительно функционального языка, и не слишком плохо использовать, после того как Вы экспериментируете с ним немного. Плюс он имеет потрясающую систему типов.