?

Log in

No account? Create an account

Давайте познакомимся - Excelsior

Jan. 1st, 2020

12:00 am - Давайте познакомимся

Previous Entry Share

Comments:

[User Picture]
From:akuklev
Date:October 15th, 2011 02:58 pm (UTC)
(Link)
У меня, кстати, вопрос, почему в Скале if/else организованы как тернарный оператор, а не через монаду Option? Ведь совершенно естественно функцию сделать
if: Boolean -> X -> Option[X],
возвращающую второй аргумент, если первый True, и None в противном случае, и назвать Option'овский getOrElse просто else?

И ещё вопрос, почему мейби-монада называется Option, а не Optional.
(Reply) (Thread)
[User Picture]
From:xeno_by
Date:October 15th, 2011 03:03 pm (UTC)
(Link)
По поводу этимологии спрошу как-нибудь у народа. Насчет ифа я подозреваю просто по инерции, зато сейчас можно сделать вот так: http://jsuereth.github.com/sips/pending/uncluttering-control.html.
(Reply) (Parent) (Thread)
[User Picture]
From:akuklev
Date:October 15th, 2011 03:05 pm (UTC)
(Link)
В этой статье предлагается тоже вот такое инерционное решение. Предлагают зачем-то делать дополнительные кейворды вместо того чтобы наоборот убирать существующие и заменять их вещами, которые можно определить средствами языка.
(Reply) (Parent) (Thread)
[User Picture]
From:xeno_by
Date:October 15th, 2011 03:06 pm (UTC)
(Link)
А как тогда убрать скобки вокруг условия ифа?
(Reply) (Parent) (Thread)
[User Picture]
From:akuklev
Date:October 15th, 2011 03:10 pm (UTC)
(Link)
1) А зачем их убирать? Мне они визуально очень даже нравятся.
2) Дык if просто должен принимать два аргумента: условие и значение. Как это пишется?..
def if(cond: Boolean)(x: Any): Option[Any] = old_if (cond) Some(x) else None,
или вроде того.
(Reply) (Parent) (Thread)
[User Picture]
From:xeno_by
Date:October 15th, 2011 03:14 pm (UTC)
(Link)
То, что надо убирать скобки, сказал Сам Мартин. Мне лично вообще без разницы =)
(Reply) (Parent) (Thread)
[User Picture]
From:akuklev
Date:October 15th, 2011 03:16 pm (UTC)
(Link)
Я весьма верю в его интуицию, он крут, но все эти промежуточные then и do терпеть ненавижу.
(Reply) (Parent) (Thread)
[User Picture]
From:xeno_by
Date:October 15th, 2011 03:20 pm (UTC)
(Link)
Возникает много вопросов. Не сделать ли Option[T]? Почему if без else возвращает опшен, а c else - anyval? Как сделать так, чтобы можно было написать "if (foo) bar"? Если не влом подумать над мелочами и оформить мысли в письменном виде, Скала тебя не забудет =)

Плюс, для полноты изложения, отмечу, что x должен быть by-name параметром (вроде, это записывается как x: => Any), впрочем, на смысл это не влияет.
(Reply) (Parent) (Thread)
[User Picture]
From:akuklev
Date:October 15th, 2011 03:23 pm (UTC)
(Link)
Да. Так как написано неоптимально, надо доработать. Подумаем и напишем.
(Reply) (Parent) (Thread)
[User Picture]
From:xeno_by
Date:October 15th, 2011 03:27 pm (UTC)
(Link)
Большое спасибо! Как раз sorhed к нам во вторник приедет на скала-митинг и толкнет идею =)
(Reply) (Parent) (Thread)
[User Picture]
From:akuklev
Date:October 15th, 2011 03:44 pm (UTC)
(Link)
Я бы как-нибудь разок тоже с огромным удовльствием заехал. Думаю, нашлось бы что обсудить. Про те же стрелки, экзотические системы типов для учитывания эффектов, экзотические системы типов, статически проверяющие корректность доступа к ресурсам и корректность multi-actor-systems, о которых я некоторое время назад пытался общаться с Пейтон-Джоунсом и МакБрайдом.
(Reply) (Parent) (Thread) (Expand)
[User Picture]
From:xeno_by
Date:October 15th, 2011 03:08 pm (UTC)
(Link)
Вообще, идея хорошая, но сейчас нет возможности подумать над воплощением. Было бы круто, если бы ты запостил свои мысли в каментах к пропоузалу.
(Reply) (Parent) (Thread)
[User Picture]
From:sorhed
Date:October 15th, 2011 03:18 pm (UTC)
(Link)
Не «у меня», а «у нас». :)
(Reply) (Parent) (Thread)
[User Picture]
From:akuklev
Date:October 15th, 2011 03:20 pm (UTC)
(Link)
Это правда. Мы только что в гтолке обсуждали.
(Reply) (Parent) (Thread)