问题标签 [dynamic-language-runtime]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
919 浏览

c# - 编译嵌套的相互递归函数

我正在创建一种玩具动态语言(偏向于 javascript),虽然我的实现是在 DLR 之上,但我认为这个问题的解决方案与语言/平台无关。

我对编译递归函数或彼此相邻的相互递归函数没有问题。但是编译嵌套的相互递归函数要困难得多。

我用来测试的示例函数如下

我认为解决这个问题的解决方案必须非常通用(也许我错了)而不是特定于 DLR,我假设我必须以某种方式解除g的内部定义并在f之前定义它并仍然保持关闭语境。

0 投票
3 回答
3917 浏览

.net - .NET 4.0 DLR 支持的动态语言

你知道 .NET 4.0 DLR 支持的动态语言列表吗?

我知道 IronRuby、IronPython 都受支持。不确定 IronScheme 是否是。F#?还有什么?

谢谢!

0 投票
2 回答
1258 浏览

c# - DynamicObject 隐式转换

我有一个 DynamicObject 的子类,我想为原始类型实现隐式转换,类似于 DO 的显式转换方法 TryConvert;也就是说,无需编写多个隐式运算符 [type] 函数。

用法:

这可能吗?如果可以,怎么做?

0 投票
4 回答
4024 浏览

reflection - 将成员动态添加到动态对象

我正在寻找一种将成员动态添加到动态对象的方法。好的,我想需要澄清一下...

当你这样做时:

Bar属性将在运行时动态添加。但是代码仍然“静态地”引用 Bar(名称“Bar”是硬编码的)......如果我想在运行时添加一个属性而不知道它在编译时的名称怎么办?

我知道如何使用类的方法来使用自定义动态对象(实际上几个月前我在博客上写过DynamicObject) ,但是如何使用任何动态对象来做到这一点?

我可能可以使用该IDynamicMetaObjectProvider界面,但我不明白如何使用它。例如,我应该将什么参数传递给GetMetaObject方法?(它期望一个Expression

顺便说一句,你如何对动态对象进行反射?“常规”反射并且TypeDescriptor不显示动态成员......

任何见解将不胜感激!

0 投票
0 回答
1238 浏览

c# - 如何在 C# 中声明一个 byte[] 以便 Ironpython 将其解释为 byte[] 而不是元组

在 C++/CLI 中,我们有一个函数返回:

IronPython 将其视为byte[].

在 C# 中,我们有一个返回以下内容的函数:

虽然 C# 客户端将 Outbuffer 视为byte[],但 IronPython 将其视为包含多个数组的元组。

我们如何使 IronPython 与OutBuffer一个byte[]而不是一个元组相关联?

为什么 C# 和 C++/CLI 之间存在差异?

编辑:这个问题已提出并显然已解决,但未提供答案。这可以纠正吗?

0 投票
4 回答
2051 浏览

c# - C# 代替 IronRuby 作为 .NET 3.5 中的嵌入式“脚本”语言

将 C# 用作 .NET 3.5 应用程序的嵌入式内部脚本应用程序的最佳实践是什么?我有一个应用程序,里面有一些小的 IronRuby 脚本。这些都没有真正利用 IronRuby 的动态特性。

显然,现在使用 IronRuby 或 IronPython 违反了我们的公司标准。哎呀。我可以使用 C# 作为脚本语言的最佳方式是什么?

我喜欢 IronRuby 的一件事是我可以在应用程序运行时进行一些小的更改,然后重新运行脚本。有什么办法可以在 C# 中做到这一点?还是必须不断重启应用程序?

0 投票
1 回答
1352 浏览

c# - C# 3.5 DLR 表达式.动态问题

我继承了一种小型脚本语言,我正在尝试将其移植到 DLR,以便更易于管理。到目前为止,它已经相当直截了当。尽管尝试动态调用变量的成员,但我遇到了问题。当前的语言在 .NET 上运行并使用解析循环和反射来执行此操作,但我希望能够摆脱这种情况。以下是脚本语言的示例:

$systen1RemoteURI、$minBad 和 $minGood 是与 $dbconnection 一起在脚本中设置的变量。但是 $dbconnection 将从传入的名为 $config 的变量中获取其值。这 4 个变量需要对调用者可用,因此它们被传递到 lambda,最初为 null。这是生成的 Lambda IL(调试视图):

我想弄清楚的是如何使用 Expression.Dynamic 发出 $config.GetDBConnection("somedb")。通过查看 Sympl 库中的示例,我相信发出的 IL 应该如下所示:.Dynamic Call GetdbConnection($config, "somedb") 但我无法弄清楚如何从 Expression.Dynamic 中实际发出它。

它似乎想要一个我无法正确创建的 CallSiteBinder,而且我不明白 Expression.Dynamic 的参数顺序是什么,因为它似乎只想要调用“成员”,而不是基础。

我不知道 $config 的运行时类型,它只是一个实现名为 GetDBConnection(string) 的函数的对象。这不是由接口或基类提供的。

任何帮助,将不胜感激。

0 投票
3 回答
935 浏览

.net - IronPython 将 .Net 类型暴露给运行时引擎

我希望向 IronPython 运行时公开特定的 .Net 类型。我可以做这个:

但这会将所有类型暴露给运行时。可以选择类型加载吗?

0 投票
2 回答
99 浏览

.net - 您如何判断您的 C# 程序集是否是从 ScriptingRuntime 调用的?

假设我用一个类构建了一个程序集:

然后,从 ipy.exe:

如何判断我的 Bar 方法是否在 ScriptingRuntime 中运行?是否可以向该运行时发出回调(重新进入)?

0 投票
1 回答
532 浏览

.net - IronRuby System.DateTime NilClass

Why comparing to null is so unstable?

Just code.

In 9.1 this code works as expected.

EDIT:

workaround: