Istnieje wiele informacji na temat typów zależnych w Haskell i Scala. Dla OCaml, nie tak bardzo. Czy ktoś jest na tyle kompetentny, aby podać kodowy przykład, jak to osiągnąć w OCaml (jeśli w ogóle jest to możliwe)? Jest oczywiście (porzucony) Dependent ML, ale wydaje się, że nie można włączyć takich rzeczy do "zwykłego" kodu OCaml.Typy zależne w OCaml
Zasadniczo chcę usunąć kod taki jak assert(n > 0)
i sprawdzić go podczas kompilacji.
EDIT
Na marginesie, warto wspomnieć o OCaml Hybrid Contract Checking oddział, który mógłby wypełnić niektóre z potrzebami utrzymaniu systemu typu. Zamiast assert(n > 0)
byś następnie napisać umowę:
contract f = {x : x > 0} -> int
let f x = x + 1
let dummy_variable = f (-1) (* Won't compile *)
Czy mogę zapytać, gdzie jest ta "mnogość informacji na temat typów zależnych w Haskell i Scala"? Pomimo rozsądnego przeglądu społeczności Haskell, nie wiem, do czego się odnosisz. (Zdecydowanie uważam, że praca UPenn nad [Dependently-Typed Haskell] (http://www.cis.upenn.edu/~sweirich/) jest istotna, ale to jest bardzo badawcze, a nie praktyczne, i może nie "dużo" w objętości). Nie mam pojęcia, co myślisz o Scali - może poza relacją z typami zależnymi od ścieżki? – gasche
Ehm, na stackoverflow, myślałem. Może zostałem oszukany przez typy zależne od Scalasa. –