Mam awarię Marshaling struktury danych (typ abstrakcyjnego błędu (niestandardowy)). Istnieje jeden znany typ abstrakcyjny, a mianowicie Big_int. Jednak Marszałkowie w porządku. W aplikacji nie ma niestandardowego kodu C. Oprócz Numsa wykorzystywana jest również biblioteka Unix (jednak nie sądzę, że istnieją jakiekolwiek aktywne obiekty tego typu). Jesteśmy marszałkami z Closures.Jakie typy bibliotek standardowych OCaml nie mogą zostać ustawione?
Używane są dwie (jedyne) biblioteki stron trzecich: Schemat OCS (Scheme interpreter, czysty Ocaml) i Dypgen (rozszerzalny parser GLR, także czysty Ocaml). Problem polega na nowej funkcji Dypgen, zapisując dynamicznie rozszerzony analizator składni.
Komunikat o błędzie Ocaml jest bezużyteczny (nie określa, który typ abstrakcyjny z niestandardowym znacznikiem jest winowajcą).
Podejrzewaliśmy, że Lexbuf jest winowajcą, ponieważ zawiera zamknięcie nad kanałem Ocaml i nie może być marszałkiem, ale wygląda na to, że to nie problem. Moje pytanie brzmi:
Które standardowe komponenty biblioteki nie mogą być składnikami Marshalla?
Wartości niestandardowe mogą mieć wskaźnik do nazwy w custom_ops (używane jako znacznik rozrządowy). – ygrek
Hm, więc co się stanie, jeśli spróbujesz Marszałka słabą tablicą? Zdecydowanie dostaję (Custom) w diagnostyce. – Yttrill
@Yttrill "Marshal.to_string (Weak.create 3) [] ;;". Wynik: "Exception: Invalid_argument" output_value: abstract value (Abstract) " –