Войти в систему

Home
    - Создать дневник
    - Написать в дневник
       - Подробный режим

LJ.Rossia.org
    - Новости сайта
    - Общие настройки
    - Sitemap
    - Оплата
    - ljr-fif

Редактировать...
    - Настройки
    - Список друзей
    - Дневник
    - Картинки
    - Пароль
    - Вид дневника

Сообщества

Настроить S2

Помощь
    - Забыли пароль?
    - FAQ
    - Тех. поддержка



Пишет kouzdra ([info]kouzdra)
@ 2011-11-30 12:09:00


Previous Entry  Add to memories!  Tell a Friend!  Next Entry
Вова Патрышев рекламирует Скалу - за паттерн-матчинг:
Вот тут:

В Скале же, на самом деле, не особ9о стесняются расписывать по классам, но на то есть другая причина: unapply, а ещё лучше сказать, линза (обратная сторона); с помощью её можно устраивать сравнение по образцу и, в зависимости от типа, выполнять какие-то действия с параметрами конструктора.
  message match {
    case CancelMessage(timeout: TimeInSeconds) => app.cancelato(timeout)
    case EncourageMessage(text: String) => galera.listen(text); galera.trabalha
    ...
  }


Тогда как в 45-летней давности в первом в истории ОО-языке это писалось так:
Current :- First;
While Current ne None do begin
  Inspect Current
    When A do Show    ! Show of A;
    When B do Show    ! Show of B;
    When C do Show    ! Show of C;
    Otherwise OutText("Not a (sub)class of A");
  OutImage;
  Current :- Current.Link
End While;


(Читать комментарии) - (Добавить комментарий)


[info]kouzdra
2011-11-30 17:46 (ссылка)
unapply - это который view в большинстве езыков - да никак не выглядит (идея была опробована и оказалась кривой). Идея же "поимщения в локальный контекст" вот она как есть)

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]ifp5
2011-11-30 18:15 (ссылка)
А почему это она оказалось кривой? По-моему, unapply это прямой и естественный способ внедрить в scala pattern matching в стиле ML. Если придерживаться ограничения, что любой scala-объект можно как угодно использовать из java, то какие варианты прямее? Или, может быть, pattern matching тоже кривой? :)

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]kouzdra
2011-12-01 15:56 (ссылка)
Ну потом что у view есть проблемы с семантикой. Скажем в haxe АТД просто мимикрировали под enum

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]ifp5
2011-12-02 18:15 (ссылка)
Какие именно проблемы? Мне так сходу припоминаются проблемы с view constructors, но в scala их как раз нет.

(Ответить) (Уровень выше)


(Читать комментарии) -