任何精通lisp的人都可以向我解释这个笑话吗?我已经对函数式编程语言进行了一些阅读,并且知道CAR/CDR意味着地址/减量寄存器的内容,但我仍然不太了解幽默.
我想知道如何使用惰性函数语言实现调试.
你能使用断点,印刷语句和传统技术吗?这甚至是个好主意吗?
我的理解是纯函数式编程不允许副作用,monad除外.
执行顺序也不能保证.
您是否需要为要测试的每个代码段编写一个monad?我想从这个领域更有经验的人那里了解这个问题.
有什么方法可以概括这里的类型定义吗?理想情况下,我希望能够更改'testInput'的类型,并在编译时测试正确推断类型.
public static void Run()
{
var testInput = 3;
var test = ((Func<int, int>) Identity).Compose<int,int,int>(n => n)(testInput);
Console.WriteLine(test);
}
public static Func<T, V> Compose<T, U, V>(this Func<U, V> f, Func<T, U> g)
{
return x => f(g(x));
}
public static T Identity<T> (this T value)
{
return value;
}
Run Code Online (Sandbox Code Playgroud)
更新:我可以指定传递给Compose的函数的类型,但这仍然指定行中的类型.
public static void Run()
{
var testInput = 3;
var identity = (Func<int, int>) Identity;
var test = identity.Compose((int n) => n)(testInput);
Console.WriteLine(test);
}
Run Code Online (Sandbox Code Playgroud)
一点背景; 我正在通过Wes Dyer的The Monvel …
哪种解决方案更受青睐?
对于列表:
List<ExampleInfo> exampleList = new List<ExampleInfo>();
public class ExampleInfo
{
internal ExampleInfo()
{ }
/* Business Properties */
public int Id { get; set; }
public string Type { get; set; }
public decimal Total { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我希望根据"总计"值得到小计.
选项1:
var subtotal1 = exampleList.Where(x => x.Type == "Subtype1").Sum(x => x.Total);
var subtotal2 = exampleList.Where(x => x.Type == "Subtype2").Sum(x => x.Total);
Run Code Online (Sandbox Code Playgroud)
选项2:
decimal subtotal1 = 0m;
decimal subtotal2 = 0m;
foreach (ExampleInfo example in exampleList)
{
switch (example.Type) …Run Code Online (Sandbox Code Playgroud) 我环顾四周,没找到一个同等的问题.
这是不好的编码练习吗?我可以很容易地阅读它,但对于阅读代码的人来说它是否太神秘了?
bool? testBool = null;
string result;
result = (testBool ?? false ? "Yes" : "No");
Run Code Online (Sandbox Code Playgroud)
编辑:我向大家道歉,感谢一些可怕的代码!这是一个有效的例子.
我对回复的速度感到有些不知所措.我打算删除这个并且做得对,但已经有4个回复了!