Была одна годная, но не могу сейчас найти, если найду, то дам ссылку.
Например, это используется в Racket в паттерн-матчинге по структурам - форма (struct struct-name ...) связывает со struct-name статическую информацию о свойствах структуры (гетеры, ацессоры, базовая структура и т.п.), потом когда мы делаем (match x [(struct-name ...) ...]), то match проверяет (статически, во время экспанда) - действительно ли struct-name структура, и, если да, то разбирает ее с помощью указанных в полученной информации геттеров.
Но тут все делается на ручном приводе, ага :)
А если сумеем трекать биндинги - то сможем автоматически туда-сюда гонять.
Например, это используется в Racket в паттерн-матчинге по структурам - форма (struct struct-name ...) связывает со struct-name статическую информацию о свойствах структуры (гетеры, ацессоры, базовая структура и т.п.), потом когда мы делаем (match x [(struct-name ...) ...]), то match проверяет (статически, во время экспанда) - действительно ли struct-name структура, и, если да, то разбирает ее с помощью указанных в полученной информации геттеров.
Но тут все делается на ручном приводе, ага :)
А если сумеем трекать биндинги - то сможем автоматически туда-сюда гонять.
Edited at 2013-08-29 09:44 am (UTC)