在Racket中设置默认参数值

Vla*_*hev 15 default-value racket

是否可以为Racket中的某些参数设置默认值?

就像在Python中一样:

def f(arg=0)
    ...
Run Code Online (Sandbox Code Playgroud)

dyo*_*yoo 22

是; 看看:声明可选参数.

例如:

(define (f [arg 0])
  (* arg 2))
Run Code Online (Sandbox Code Playgroud)

Racket还支持带关键字参数的函数.链接应该导致文档也谈论它们.祝好运!

  • 使用名称.(define(tree-sum t)(let loop([tt])(if(tree-node?t)(apply +(map loop(tree-children t))))(tree-val t))))然后你可以在循环函数中添加你需要的任何状态参数,而不会将它们泄漏到树和函数的接口中.@Halst (3认同)
  • 使用可选参数在递归函数中存储状态,我认为这是一个轻微的邪恶,因为你的抽象是漏洞.我更喜欢带有内部定义的模式,如:(define(foo abc)(define(foo abc state)#| ... |#)(foo abc'init-state)) (2认同)