gds 16.03.2012 03:36 umodniE206960D

ааа, убейте меня, иначе я всё забрызгаю тут1111
@default631">http://flint.cs.yale.edu/cs428/coq/doc/R...
СУТЬ:
У вас есть индуктивный тип данных для представления вашего игрушечного AST, специфичного для вашей предметной области.
У вас есть функция, преобразующая _ваши_ значения из AST в конкретные значения _coq'а_. (конечно, на функцию накладываются кое-какие ограничения, магии ведь нет.)
Теперь внимательно следите за руками: тактика "quote имявашейфункции" преобразует выражение coq'а, записанное в AST coq'а, в значение, имеющее тип данных вашего AST, согласно предоставленной функции. (значение, собственно, внутри тоже будет представлено в AST coq'а, но с ним можно работать в "userland", и, при желании, применив к нему "вашуфункцию", получить обратно значение в AST coq'а.)
Обратите внимание на направление преобразований между двумя AST.
По-моему, это что-то наподобие встроенного термоядерного camlp4.
Надо осмыслить.

(тега "академота" нет, потому что это настолько "практикота", что аж страшно становится.)

coq, cs
1. gds 16.03.2012 03:37

(парсер лох, ссылка побилась, см. http://flint.cs.yale.edu/cs428/coq/doc/R... секцию "10.7 quote")

2. Kakadu 16.03.2012 09:33 gemini

> У вас есть функция, преобразующая _ваши_ значения из AST в конкретные значения _coq'а_
> тактика "quote имявашейфункции" преобразует выражение coq'а, записанное в AST coq'а, в значение, имеющее тип данных вашего AST
т.е. эта тактика, принимая наше отображение, упомянутое выше, делает с выражением coq нечто похожее на действие обратного к нашему отображения; короче из нашего отображения, генерит обратное и его использует.
(/me начинает вспоминать теоремы о невозможности построения обратного отображения в общем виде, но точную формулировку вспомнить не может)

P.S. если что ссылку на мануал не читал, попробую чуть попозжее взяться.

3. gdsKakadu /2 16.03.2012 09:51

да, там именно генерация обратного отображения. И да, не везде работает. Но я предвидел такое развитие событий, уточнив "(конечно, на функцию накладываются кое-какие ограничения, магии ведь нет.)"

4. gdsKakadu /2 16.03.2012 09:52 umodniE206960D

кстати, если чо, ссылку на мануал необязательно читать, там не больше, чем я описал. разве что там примеры есть, и хорошие.

5. Kakadugds /4 16.03.2012 09:54 gemini

постараюсь найти время на ковыряние coq

6. gdsKakadu /5 16.03.2012 09:56 umodniE206960D

ну смотри, если оно нужно. Если есть что-то, что в окамле типами записать сложно, а жутко хочется — скорее всего в coq это запишется легко, а сгенерённый камлокод будет работать. Далее, если надо что-то доказать о программе (например, тупо, что делим не на ноль) — тоже coq пригоден. А если просто кодить — на окамле быстрее, всё-таки, и по кодингу, и по скорости результата, и лучше по выразительности.

Do you really want to delete ?