D>Не, на самом деле все вхождения идентификатора foo равноправны — цель же не определить тип, а проверить самосогласованность всей программы.
Ну это зависит от размера контекста, который мы можем используем при выводе типа. В принципе же, можно ведь потребовать, что
бы тип выводился из одного определения — тогда если тип чего-либо не выводится из операций, то можно потребовать его явно специфицировать.
Просто я как-то опасаюсь, что если вывод типов каждого узла это
let type_of ast_node ast = ...
то, например, поиск всех вызовов функции при ее определении может дороговато обходиться. Хотя...
Re[9]: А вот скриптовые языки со статической типизацией?
Здравствуйте, dmz, Вы писали:
dmz>А вот где бы посмотреть на простые (простые — это не окамл с хаскеллом, пожалуйста) скриптовые языки со dmz>статической типизацией? Т.е. что бы тип всех переменных выводится в компайл-тайме. Нужен источник вдохновения.
source forge, поиск среди проектов по "type inference". навскидку — kaya
Люди, я люблю вас! Будьте бдительны!!!
Re: А вот скриптовые языки со статической типизацией?
dmz>А вот где бы посмотреть на простые (простые — это не окамл с хаскеллом, пожалуйста) скриптовые языки со dmz>статической типизацией? Т.е. что бы тип всех переменных выводится в компайл-тайме. Нужен источник вдохновения.
dmz>>А вот где бы посмотреть на простые (простые — это не окамл с хаскеллом, пожалуйста) скриптовые языки со dmz>>статической типизацией? Т.е. что бы тип всех переменных выводится в компайл-тайме. Нужен источник вдохновения.
FR>http://min-caml.sourceforge.net/index-e.html
Cкоро наверное, можно будет смело повесить сюда ссылку и на бип. Типы выводятся, в т.ч. и полиморфных функций.
Re[2]: А вот скриптовые языки со статической типизацией?
dmz>>А вот где бы посмотреть на простые (простые — это не окамл с хаскеллом, пожалуйста) скриптовые языки со dmz>>статической типизацией? Т.е. что бы тип всех переменных выводится в компайл-тайме. Нужен источник вдохновения.
FR>http://min-caml.sourceforge.net/index-e.html
Очень крутые товарищи. В учебных целях разработать компилятор ML с нативной кодогенерацией, код которого работает быстрее ocamltop
и часто — быстрее gcc — это, конечно, мощно.
Re[3]: А вот скриптовые языки со статической типизацией?
Здравствуйте, dmz, Вы писали:
dmz>Очень крутые товарищи. В учебных целях разработать компилятор ML с нативной кодогенерацией, код которого работает быстрее ocamltop dmz>и часто — быстрее gcc — это, конечно, мощно.
реклама — двигатель прогресса
Люди, я люблю вас! Будьте бдительны!!!
Re[3]: А вот скриптовые языки со статической типизацией?
Здравствуйте, dmz, Вы писали:
dmz>Очень крутые товарищи. В учебных целях разработать компилятор ML с нативной кодогенерацией, код которого работает быстрее ocamltop dmz>и часто — быстрее gcc — это, конечно, мощно.
Они еще круче, программы запускают на собственноручно спроектированном процессоре
Re[4]: А вот скриптовые языки со статической типизацией?
Здравствуйте, BulatZiganshin, Вы писали:
dmz>>Очень крутые товарищи. В учебных целях разработать компилятор ML с нативной кодогенерацией, код которого работает быстрее ocamltop dmz>>и часто — быстрее gcc — это, конечно, мощно.
BZ>реклама — двигатель прогресса
Для простого языка и оптимизатор сделать проще. Например для того же оберона есть http://www.excelsior.ru/products/xds.html написанный лет десять назад и делающий compile time оптимизации не хуже а может даже и получше современных C++ компиляторов. Другой пример Stalin Scheme.
Re[4]: А вот скриптовые языки со статической типизацией?
Ну под один конкретный процессор и для несложного языка почему бы и не сделать? Тем более, если это учебный курс,
который оттачивается годы. Документы и исходники, кстати, интересные, мне бы их полгода назад
Re[5]: А вот скриптовые языки со статической типизацией?
Здравствуйте, dmz, Вы писали:
dmz>Ну под один конкретный процессор и для несложного языка почему бы и не сделать? Тем более, если это учебный курс, dmz>который оттачивается годы. Документы и исходники, кстати, интересные, мне бы их полгода назад
Не совсем по теме насчет конкретного процессора, оказывается у llvm есть биндинг к окамлу, и вот тут http://groups.google.com/group/fa.caml/msg/5aee553df34548e2 показано как в 200 строчек кода сделать компилятор очень ограниченного подмножества окамла на llvm, в общем тоже интересное направления для DSL строения.