我正在用C#(使用Visual Studio)制作一个使用IronScheme的程序,这是我的代码片段。
exp = "(car '('(1 2 3) 4 5 6))";
System.Console.WriteLine(exp.Eval());
基本上,我想获得该列表的第一个元素,即另一个列表(1 2 3)
。我的问题是我不知道如何获得实际的号码列表。在这个例子中,我打印了Eval()
的结果,打印出来:
IronScheme.Runtime.Cons
如果我将其转换为字符串,我会得到相同的结果。任何其他类型的演员/转换打印相同的东西
System.Console.WriteLine(exp.Eval().ToString());
// Also prints "IronScheme.Runtime.Cons"
如何获取该列表的值,如C#list List<>
?
答案 0 :(得分:1)
Cons
实施IEnumerable
。
您遇到的一个问题是已引用列表中的引用列表。我不确定这是否是你想要的,但我正在删除它的例子:
var exp = "(car '((1 2 3) 4 5 6))";
var result = exp.Eval<Cons>(); // eval and cast => (1 2 3)
var list = result.Cast<int>().ToList();
Protip :您可以使用Cons.PrettyPrint
查看以更易阅读的格式展开的内容。