Racket:高阶函数合约
我正在使用 Racket 合约系统,我想导出一个没有参数的函数,它返回一个没有参数的 lambda 表达式,例如:
#lang racket
(define (foo)
(do-somthing)
(lambda ()
(do-other things)))
有人知道如何为这种函数编写合约吗?
I am using Racket contract system, and I want to export a function of no arguments, which returns a lambda expression with no arguments, e. g.:
#lang racket
(define (foo)
(do-somthing)
(lambda ()
(do-other things)))
Does anyone know how to write contract for this kind of function?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我怀疑它看起来类似于:
(-> (-> any/c))
是一个与返回另一个函数的函数相匹配的合约,该函数在求值时返回一个整数值。但如果您想放宽
foo
的返回值,则只需使用any
而不是any/c
,它允许任意数字返回值,而不仅仅是单个值。考虑:请参阅合约关于 Racket 文档中的高阶函数。
I suspect it would look something along the lines of:
(-> (-> any/c))
is a contract that matches functions that returns another function, which, when evaluated, returns a single integer value.But if you'd like to relax return values of
foo
, you'd use justany
instead ofany/c
, which allows any number of return values, not just a single value. Consider:See Contracts on Higher-order Functions in Racket documentation.