gpt4 book ai didi

racket - 你如何制作一个在 Racket 中使用关键字的功能

转载 作者:行者123 更新时间:2023-12-01 11:36:57 25 4
gpt4 key购买 nike

我已经看到 racket 中的一些函数或数据结构使用关键字 (#:foo),但我无法想象出我自己的函数来使用它们。 racket 文档只是松散地定义了关键字类似于符号,并且有点像这样,但是编写一个应该将关键字作为参数的函数只会导致以下错误:关键字后缺少参数表达式,这让我相信关键字与符号完全不同,因为它们不能作为值传递(除非被引用)。

我最熟悉的例子是match:

(...    
(match foo
[n #:when (< 10 n) "foo is greater than 10"]
[_ "undefined"]))

所以我的问题是:如何创建一个函数或任何能够像上例中那样采用关键字的函数?

最佳答案

将关键字声明为过程参数定义的一部分,例如:

(define (my-sort lst #:reverse reversed? #:comparator cmp)
(if reversed?
(reverse (sort lst cmp))
(sort lst cmp)))

(my-sort '(1 5 2 3 4) #:comparator > #:reverse #t)
=> '(1 2 3 4 5)

(my-sort '(1 5 2 3 4) #:reverse #f #:comparator >)
=> '(5 4 3 2 1)

正如@uselpa 在评论中提到的,这里是 documentation 中的相关部分.

关于racket - 你如何制作一个在 Racket 中使用关键字的功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25909504/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com