/
FuncUtil.cs
41 lines (37 loc) · 1.36 KB
/
FuncUtil.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
using System;
using Microsoft.FSharp.Core;
using Vim.Extensions;
namespace Vim.UnitTest
{
public static class FuncUtil
{
public static FSharpFunc<MotionArgument, FSharpOption<MotionResult>> CreateMotionFunc(Action<int> action)
{
Func<MotionArgument, FSharpOption<MotionResult>> func = arg =>
{
action(arg.Count);
return FSharpOption<MotionResult>.None;
};
return func.ToFSharpFunc();
}
public static FSharpFunc<MotionArgument, FSharpOption<MotionResult>> CreateMotionFunc(Func<int, MotionResult> action)
{
Func<MotionArgument, FSharpOption<MotionResult>> func = arg =>
{
return FSharpOption.Create(action(arg.Count));
};
return func.ToFSharpFunc();
}
public static FSharpFunc<MotionArgument, FSharpOption<MotionResult>> CreateMotionFunc(Func<MotionResult> func)
{
Func<MotionArgument, FSharpOption<MotionResult>> inner = arg =>
{
var ret = func();
return ret != null
? FSharpOption.Create(ret)
: FSharpOption<MotionResult>.None;
};
return inner.ToFSharpFunc();
}
}
}