gds (gds) wrote,
gds
gds

Маленький апдейт к предыдущему посту про ocaml-lazy-labelled.

Научил свою говнобиблиотеку затягивать узлы:

Lazy.rec_data : Label.t -> (Lazy.t 'a -> 'a) -> 'a;

Даже работает. Ограничения -- естественные: из того, что в функцию дают ленивое значение с типом Lazy.t 'a, не следует, что его можно форсировать сразу, до непосредственного создания структуры. С другой стороны, если форсируете, то ожидайте появления указанной метки (с типом Label.t) в цикле, который вам кинется исключением Lazy.Cycle.

Этого (rec_data) мне тоже не хватало при работе с рекурсивными структурами данных.

Ну и поправил там тупой баг, который не вылез сразу, но вылез бы после первого серьёзного использования.
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 0 comments