Mildfunc 2019.6.10.2

Package Description

Install-Package Mildfunc -Version 2019.6.10.2
dotnet add package Mildfunc --version 2019.6.10.2
<PackageReference Include="Mildfunc" Version="2019.6.10.2" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Mildfunc --version 2019.6.10.2
The NuGet Team does not provide support for this client. Please contact its maintainers for support.

Mildfunc

Mildfuncとは

Mildfuncは、delegate型やメソッドをより柔軟に扱うための機能を提供するライブラリです。

Mildfuncの使い方

Mildfunc.Fn クラス

/**
 * using static で Mildfunc.Fn を指定してあげる.
 */
using static Mildfunc.Fn;
using System;

namespace ConsoleApp
{
    class Program
    {
        static int Mul(int x, int y) => x * y;

        static void Main(string[] args)
        {
            /**
             * 通常だと, ラムダ式は自動でdelegate型に推論されないため,
             * 以下のようにキャストする必要があります.
             */
            var add = (Func<int, int, int>)((x, y) => x + y);
            Console.WriteLine($"10 + 20 = { add(10, 20) }");

            /**
             * Mildfuncを利用することで, 以下のように記述を簡略化することができます.
             * 記述方法は2種類あり, どちらで記述しても同じ結果となります. 
             */
            // (1) 引数の型を明示する方法.
            //     ラムダ式を指定する場合に効果があります.
            var sub = fn( (int x, int y) => x - y );
            Console.WriteLine($"10 - 20 = { sub(10, 20) }");


            // (2) 型パラメータを指定する方法.
            //     メソッドを指定する場合に効果があります.
            var mul = fn<int, int, int>( Mul );
            Console.WriteLine($"10 * 20 = { mul(10, 20) }");
        }
    }
}

Mildfunc.Curry クラス

/**
 * using static で Mildfunc.Curry を指定してあげる.
 */
using static Mildfunc.Curry;
using System;

namespace ConsoleApp
{
    class Program
    {
        static int Mul (int x, int y) => x * y;

        static void Main(string[] args)
        {
            /**
             * curry関数を使うことで, 既存のメソッドを簡単にカリー化することが可能です.
             * 記述方法は2種類あり, どちらで記述しても同じ結果となります. 
             */
            // (1) 引数の型を明示する方法.
            //     ラムダ式をカリー化する場合に効果があります.
            var add = curry( (int x, int y) => x + y );
            Console.WriteLine($"10 + 20 = { add(10)(20) }");

            // カリー化しているため, 部分適用することも可能です.
            var add5 = add(5);
            Console.WriteLine($"add5(20) = { add5(20) }");


            // (2) 型パラメータを指定する方法.
            //     メソッドを指定する場合に効果があります.
            var mul = curry<int, int, int>( Mul );
            Console.WriteLine($"10 * 20 = { mul(10)(20) }");

            // カリー化しているため, 部分適用することも可能です.
            var mul10 = mul(10);
            Console.WriteLine($"mul10(20) = { mul10(20) }");
        }
    }
}

Mildfunc

Mildfuncとは

Mildfuncは、delegate型やメソッドをより柔軟に扱うための機能を提供するライブラリです。

Mildfuncの使い方

Mildfunc.Fn クラス

/**
 * using static で Mildfunc.Fn を指定してあげる.
 */
using static Mildfunc.Fn;
using System;

namespace ConsoleApp
{
    class Program
    {
        static int Mul(int x, int y) => x * y;

        static void Main(string[] args)
        {
            /**
             * 通常だと, ラムダ式は自動でdelegate型に推論されないため,
             * 以下のようにキャストする必要があります.
             */
            var add = (Func<int, int, int>)((x, y) => x + y);
            Console.WriteLine($"10 + 20 = { add(10, 20) }");

            /**
             * Mildfuncを利用することで, 以下のように記述を簡略化することができます.
             * 記述方法は2種類あり, どちらで記述しても同じ結果となります. 
             */
            // (1) 引数の型を明示する方法.
            //     ラムダ式を指定する場合に効果があります.
            var sub = fn( (int x, int y) => x - y );
            Console.WriteLine($"10 - 20 = { sub(10, 20) }");


            // (2) 型パラメータを指定する方法.
            //     メソッドを指定する場合に効果があります.
            var mul = fn<int, int, int>( Mul );
            Console.WriteLine($"10 * 20 = { mul(10, 20) }");
        }
    }
}

Mildfunc.Curry クラス

/**
 * using static で Mildfunc.Curry を指定してあげる.
 */
using static Mildfunc.Curry;
using System;

namespace ConsoleApp
{
    class Program
    {
        static int Mul (int x, int y) => x * y;

        static void Main(string[] args)
        {
            /**
             * curry関数を使うことで, 既存のメソッドを簡単にカリー化することが可能です.
             * 記述方法は2種類あり, どちらで記述しても同じ結果となります. 
             */
            // (1) 引数の型を明示する方法.
            //     ラムダ式をカリー化する場合に効果があります.
            var add = curry( (int x, int y) => x + y );
            Console.WriteLine($"10 + 20 = { add(10)(20) }");

            // カリー化しているため, 部分適用することも可能です.
            var add5 = add(5);
            Console.WriteLine($"add5(20) = { add5(20) }");


            // (2) 型パラメータを指定する方法.
            //     メソッドを指定する場合に効果があります.
            var mul = curry<int, int, int>( Mul );
            Console.WriteLine($"10 * 20 = { mul(10)(20) }");

            // カリー化しているため, 部分適用することも可能です.
            var mul10 = mul(10);
            Console.WriteLine($"mul10(20) = { mul10(20) }");
        }
    }
}

  • .NETStandard 2.0

    • No dependencies.

This package is not used by any popular GitHub repositories.

Version History

Version Downloads Last updated
2019.6.10.2 89 6/10/2019