22 lines
769 B
Plaintext
22 lines
769 B
Plaintext
Option Explicit On
|
|
Option Infer On
|
|
Option Strict On
|
|
|
|
Module Currying
|
|
' The trivial curry.
|
|
Function Curry(Of T1, TResult)(func As Func(Of T1, TResult)) As Func(Of T1, TResult)
|
|
' At least satisfy the implicit contract that the result isn't reference-equal to the original function.
|
|
Return Function(a) func(a)
|
|
End Function
|
|
|
|
Function Curry(Of T1, T2, TResult)(func As Func(Of T1, T2, TResult)) As Func(Of T1, Func(Of T2, TResult))
|
|
Return Function(a) Function(b) func(a, b)
|
|
End Function
|
|
|
|
Function Curry(Of T1, T2, T3, TResult)(func As Func(Of T1, T2, T3, TResult)) As Func(Of T1, Func(Of T2, Func(Of T3, TResult)))
|
|
Return Function(a) Function(b) Function(c) func(a, b, c)
|
|
End Function
|
|
|
|
' And so on.
|
|
End Module
|