Итак, я решил старые проблемы с deriving и получил новые. На функциях он не падает. Полиморфный тип ('a. 'b) PMap.t я обренул
тут.
Получил новую проблему: deriving повисает, когда две переменные рекурсивные. (По-видимому надо использовать механизм подбный тому, что есть в ocamldebug - печатать только до определеной глубины). Впрочем даже "великий и
(
Read more... )
Comments 3
После печати конечно чистить глобальные списки.
Или сразу пробегать и смотреть, какие значения будут встречаться снова, чтобы их как-то особо пометить при печати сразу.
Ну или завести один глобальный список на все значения, и хранить там значения с типом Obj.t, получаемые через Obj.repr. (хранить есть смысл только те значения, которые Obj.is_block val && Obj.tag val < Obj.no_scan_tag (замечу, порядок условий важен, так как "&&" ленивое).)
А зачем вообще используется deriving?
Reply
http://github.com/Kakadu/Triss/blob/master/haxe/type.ml
там начиная со строки `type t = ` идет тип, который представляет AST программы на Haxe. Я очень хочу на него смотреть удобно. Я думал что с помощью deriving наступит коммунизм, но нет, и тут умериканцы постарались!) А писать printf для типа в 150 строчек я пока с духом не собрался(. Хочется простого решения.
Да, я пробовал загружать всё это добро в оcamldebug. Но, из-за JaneStreet's Core у меня проблемы с линковкой в камлодебаге. Надо будет их как-то решить, либо сильно перелопатить код в triss_main.ml, чтобы посмотреть на него в топлевеле. Правда я не уверен, что там не будет тех же проблем что в камлодебаге. Надо будет
Reply
Reply
Leave a comment