如何在类型化球拍中指定 void 函数?

JRR*_*JRR 4 racket typed-racket

的类型注释应该是什么foo

(define (foo)
  (println "hello"))
Run Code Online (Sandbox Code Playgroud)

我尝试了这些,但没有一个起作用:

(: foo (-> () ()))
(: foo (-> Void Void))
Run Code Online (Sandbox Code Playgroud)

Lei*_*sen 5

该类型(-> Void Void)适用于接受 avoid并返回 a 的函数void。您的foo函数不接受任何参数,并返回一个void. 因此,您想要的类型实际上是:

(: foo (-> Void))
(define (foo)
  (println "hello"))
Run Code Online (Sandbox Code Playgroud)

作为旁注:

如果你想修改foo为 type (-> Void Void),你可以这样做:

(define (foo _)
  (print "Don't do this though"))
Run Code Online (Sandbox Code Playgroud)

至于:

(: foo (-> () ()))
Run Code Online (Sandbox Code Playgroud)

这在语法上是无效的。