When to use `form:` in Typed Racket?

ts-guide said:

In addition to the form, :almost all forms of binding from a racket have analogues that allow specifying types.

But he does not say when to use which one.

And ts-reference said it form:is deprecated for backward compatibility.

But in the ts-guide, form:used in many places.

So, : v tpreferable than form:? What about form?

For instance:

; form:
(define: (id [z : Number]) : Number z)

; : v t + form
(: id (-> Number Number))
(define (id z) z)

; form (it seems recent versions of Racket add this?)
(define (id [z : Number]) : Number z)
+4
source share
2 answers

First form

define:. , :, Racket (v 6.1.1 ). typed/racket define, . .

, *. , typed/racket

(: id (Number . -> . Number) 

, , .

... , C, Java, ML .. , :

> ((lambda ((x : Number)) : Number (+ x 10)) 4)
- : Number
14 

, typed/racket , , :

> ((lambda ((x : Number))(+ x 10)) 4)
- : Number
14

typed/racket , :

> ((lambda (x)(+ x 10)) 4)
- : Integer [more precisely: Positive-Index]
14
> ((lambda (x)(+ x 10)) 4.0)
- : Flonum [more precisely: Positive-Flonum]
14.0
> ((lambda (x)(+ x 10)) 4/1)
- : Integer [more precisely: Positive-Index]
14

, typed/racket , . , , - " " typed/racket .

+1

, .

.

- TR .

+1

Source: https://habr.com/ru/post/1570127/


All Articles