Возникает много вопросов. Не сделать ли Option[T]? Почему if без else возвращает опшен, а c else - anyval? Как сделать так, чтобы можно было написать "if (foo) bar"? Если не влом подумать над мелочами и оформить мысли в письменном виде, Скала тебя не забудет =)
Плюс, для полноты изложения, отмечу, что x должен быть by-name параметром (вроде, это записывается как x: => Any), впрочем, на смысл это не влияет.
Я бы как-нибудь разок тоже с огромным удовльствием заехал. Думаю, нашлось бы что обсудить. Про те же стрелки, экзотические системы типов для учитывания эффектов, экзотические системы типов, статически проверяющие корректность доступа к ресурсам и корректность multi-actor-systems, о которых я некоторое время назад пытался общаться с Пейтон-Джоунсом и МакБрайдом.
Есть такая статья Коннора Макбрайда "Kleisli arrows of outrageous fortune" от марта сего года, которая показывает, как интегрировать в систему типов Хоаровы тройки, мне показалось, что это прекрасный чистый способ интегрировать в типы аннотации управления ресурсами (как в языке Vault, к созданию которого приложил руку Пейтон-Джоунс). Вообще использование стрелок вместе с зависимыми/экзистенциальными типами позволяет кодировать пурым образом самые разные подходы к эффектам и контролю управлением ресурсами от легковесных до филигранных.
Плюс, для полноты изложения, отмечу, что x должен быть by-name параметром (вроде, это записывается как x: => Any), впрочем, на смысл это не влияет.
Крайне интересно будет узнать.