using System;

class TestUnary
{
	static void Foo (Action<int> a)
	{
	}

	static void Bar ()
	{
		Foo (str => ++str);
	}
}

class Program
{

	static void Foo (Action<string> a)
	{
		a ("action");
	}

	static T Foo<T> (Func<string, T> f)
	{
		return f ("function");
	}
	
    static string Bar ()
	{
		return Foo (str => str.ToLower ());
	}

	public static void Main ()
	{
		var str = Foo (s => s);
		Console.WriteLine (str);
		Foo (s => Console.WriteLine (s));
	}
}