Eal*_*had 3 currying racket 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]
Run Code Online (Sandbox Code Playgroud)
为什么?
小智 5
我相信这与 * 只能接受一个参数这一事实有关,因此当您使用参数对其进行柯里化时,它会返回一个不接受其他参数的过程。键入(curry * 2)在输入/球拍命令行和观察结果:(-> Number)。
请注意,只有一个返回类型,没有参数。我在打字球拍中看不到解决此问题的方法,但我希望至少可以解释为什么会发生这种情况。您应该可以安全地将 currying 用于更复杂的过程,只要它们没有仅采用一个参数的选项。