September Morn Update
This commit is contained in:
parent
4e2d22a71d
commit
aac6731f2c
6856 changed files with 141342 additions and 21127 deletions
|
|
@ -0,0 +1,32 @@
|
|||
Module PartialApplication
|
||||
Function fs(Of TSource, TResult)(f As Func(Of TSource, TResult), s As IEnumerable(Of TSource)) As IEnumerable(Of TResult)
|
||||
' This is exactly what Enumerable.Select does.
|
||||
Return s.Select(f)
|
||||
End Function
|
||||
|
||||
Function f1(x As Integer) As Integer
|
||||
Return x * 2
|
||||
End Function
|
||||
|
||||
Function f2(x As Integer) As Integer
|
||||
Return x * x
|
||||
End Function
|
||||
|
||||
' The overload that takes a binary function and partially applies to its first parameter.
|
||||
Function PartialApply(Of T1, T2, TResult)(f As Func(Of T1, T2, TResult), arg As T1) As Func(Of T2, TResult)
|
||||
Return Function(arg2) f(arg, arg2)
|
||||
End Function
|
||||
|
||||
Sub Main()
|
||||
Dim args1 As Integer() = {0, 1, 2, 3}
|
||||
Dim args2 As Integer() = {2, 4, 6, 8}
|
||||
|
||||
Dim fsf1 = PartialApply(Of Func(Of Integer, Integer), IEnumerable(Of Integer), IEnumerable(Of Integer))(AddressOf fs, AddressOf f1)
|
||||
Dim fsf2 = PartialApply(Of Func(Of Integer, Integer), IEnumerable(Of Integer), IEnumerable(Of Integer))(AddressOf fs, AddressOf f2)
|
||||
|
||||
Console.WriteLine("fsf1, 0-3: " & String.Join(", ", fsf1(args1)))
|
||||
Console.WriteLine("fsf1, evens: " & String.Join(", ", fsf1(args2)))
|
||||
Console.WriteLine("fsf2, 0-3: " & String.Join(", ", fsf2(args1)))
|
||||
Console.WriteLine("fsf2, evens: " & String.Join(", ", fsf2(args2)))
|
||||
End Sub
|
||||
End Module
|
||||
Loading…
Add table
Add a link
Reference in a new issue