Dlaczego to działa dobrze?Używanie otwartych połączeń poza modułem zostało zdefiniowane w
module Account = struct
type account_type = Current of float | Savings of float
end
let sarah = Account.Current 100.0;;
Podczas gdy ostatnia linia w poniższym przykładzie produkuje Error: syntax error
?
module Account = struct
type 'a account_type = [> `Current of float | `Savings of float ] as 'a
end
let pete = Account.`Current 100.0;;
To znaczy dlaczego nie mogę używać typu otwartego złącza poza modułem bez otwierania modułu? Powinienem powiedzieć, że znalazłem się, że zmiana ostateczną linię:
open Account;;
let pete = `Current 100.0;;
działa dobrze, ale oczywiście jest to uciążliwe, jeśli mogę użyć account_type
dużo, lub alternatywnie muszę otworzyć Account
na początku dowolnego kodu sekcja, w której jest używany account_type
, co oznacza, że poświęcę abstrakcję, którą otrzymam, używając podpisu dla Account
Przeszukałem kilka tutoriali OCaml, a także dokumentację INRIA, i nie mogę znaleźć żadnej wzmianki o jak to robisz.
Czy można uniknąć konieczności otwierania modułu za każdym razem, gdy chcę korzystać z account_type
?
Dzięki z góry,
Zach
Ah, próbowałem uciec z backtick z backtick, powodując tony zamieszania dla wszystkich zaangażowanych. – nlucaroni