在Typed Racket中卷曲

时间:2017-03-29 15:17:36

标签: racket currying typed-racket

在常规的球拍中,((curry * 2) 3)按预期工作,结果为6

然而,在Typed Racket:

> ((curry * 2) 3)
; readline-input:3:0: Type Checker: could not apply function;
;  wrong number of arguments provided
;   expected: 0
;   given: 1
;   in: ((curry * 2) 3)
; [,bt for context]

为什么?

1 个答案:

答案 0 :(得分:4)

我认为它与*只能使用一个参数这一事实有关,所以当你用一个参数来讨论它时,它会返回一个不带额外参数的过程。在typed / racket的命令行键入(curry * 2),并观察结果:(-> Number)

请注意,只有返回类型且没有参数。我不会在打字球拍中看到这种方法,但我希望至少可以解释为什么会这样。只要他们没有选择只使用一个参数,您就可以安全地使用更复杂的程序进行currying。