LINUX.ORG.RU

История изменений

Исправление monk, (текущая версия) :

Это же в рантайме?

Контракты - да. Зато произвольные.

В Typed Racket можно и при компиляции. Что-то вроде

(: sort (All (a) (-> (Vectorof a) (SortedVector a)))

(:make0-10 (-> Int Int0-10))
(define (make0-10 x) x) ;; можно сделать runtime проверку или просто пообещать, что сюда будут попадать только от 0 до 10

(: test (-> (SortedVector Int0-10) Void))

(test (sort (vector (make0-10 2) (make0-10 3) (make0-10 5))))

Исходная версия monk, :

Это же в рантайме?

Контракты - да. Зато произвольные.

В Typed Racket можно и при компиляции. Что-то вроде

(: sort (All (a) (-> (Vectorof a) (SortedVector a)))

(:make0-10 (-> Int Int0-10))

(: test (-> (SortedVector Int0-10) Void))

(test (sort (vector (make0-10 2) (make0-10 3) (make0-10 5))))