问题标签 [quotations]
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.
reflection - 这是一个 F# 引用错误吗?
具有上述递归值的示例代码会产生以下 F# 编译器错误:
错误 FS0432:[<ReflectedDefinition>] 术语不能包含前缀拼接运算符“%”的使用
我在上面的代码中看不到任何切片运算符的用法,看起来像一个错误...... :)
看起来这是ReflectedDefinitionAttribute
仅通过报价的问题,正常报价效果很好:
Lazy.create
使用隐藏和Lazy.force
用法产生预期结果:
所以问题是:这是否是 F# 编译器错误?
project-management - 如何为设计会议做固定报价?
通常,当我为客户做一个系统时,我会按小时进行设计会议,然后为整个系统开发提供一个固定的报价。
现在这位客户给了我一个曲线球:他也不想要设计的小时费率——他也希望我报一个固定的价格来完成所有的设计!并不是说他想讨价还价,但他不希望处于设计越长,他必须付出越多的情况——我可以理解这一点。
对于业务层,使用它实际上并不太难,因为从他最初的功能规范中,我很好地了解了核心业务对象是什么,并且在我们的设计协议中,我定义了几个对象,这些对象将被一个固定的设计价格;如果发现任何新的重要对象,它们将被视为差异,并且将按小时计费。到目前为止,一切都很好。
但是当涉及到 UI 时,事情开始变得更加模糊。会有多少个屏幕?还不知道。每个屏幕上会出现什么?还不知道。我们所知道的是,它是一个“仪表板”类型的系统,并且会涉及到很多可视化报告,例如仪表、图表等。 所以也许将其定为每个屏幕设计的固定价格?不是一个很好的定义;他可能会说一切都将出现在一个屏幕上。也许每个“视觉报告”设计的价格,包括切片和切块的能力?同样不是那么容易——可能整个系统只是一个报告,所有的智能都将用于如何呈现该细分。
任何人都知道如何为这样的 UI 设计做一个固定的报价?
reflection - 在 F# 引号内嵌入变量
我正在为 SQL ( http://github.com/kolosy/furious ) 编写一个 F# dsl。
选择语句如下所示:
一个明显(也是愚蠢)的问题是......我如何参数化报价?
如果我只是喜欢:
然后z
被解析为静态属性访问器(PropertyGet(None, String z, [])
)。我需要一些能让我仅根据引用检索变量/let 绑定的值的东西。想法?
f# - F#:带有类型定义的引用?
我在玩引号,我看不到类型定义的表达式模式。真的没有,还是我错过了什么?
给出“引号文字中的意外关键字'类型'。”
f# - 生成参数化的 F# 引用
假设我们有一个简单的 F# 引用:
得到的报价是这样的:
现在我想概括它,所以我可以使用在其上定义的任意类型和方法/属性,而不是输入“Pet”和属性“Name”。这是我正在尝试做的事情:
结果表达式现在不同了:
如您所见,第一个和第二个表达式之间的区别在于,在第一种情况下,顶级 NewDelegate 表达式包含 PropertyGet,而第二个表达式将 PropertyGet 包装在 Application/Lambda 表达式中。当我将此表达式传递给外部代码时,它不会期望这种表达式结构并失败。
所以我需要一些方法来构建一个通用版本的引用,所以当它被专门化时,得到的引用是 <@@ System.Func(fun (x : Pet) -> x.Name) @@> 的精确匹配。这可能吗?还是只能选择手动将模式匹配应用于生成的报价并将其转换为我需要的?
更新。作为一种解决方法,我实现了以下适配器:
它完成了这项工作 - 我现在可以将表达式从第一种形式转换为第二种形式。但我有兴趣找出这是否可以通过简单的方式实现,而无需遍历表达式树。
f# - 什么是 F# 引号?
F# 中的“引号”是什么,它们的用途是什么?
regex - 如何将模式与可选的周围引号匹配?
如何编写一个匹配可以包含引号的模式的正则表达式,但如果确实如此,则必须在开头和结尾有匹配的引号?
将不起作用,因为它将允许以引号开头但不以引号结尾的模式。
会起作用,但会重复。有没有更好的方法可以在不重复模式的情况下做到这一点?
f# - 从 PowerPack 评估综合报价表达式时出错
我试图弄清楚修改报价,然后评估它们。在这里,我从基础开始,只是尝试使用 Quotations api 创建报价。报价绑定OK,但在评估时出现错误。
f# - 如何从引用的表达式匹配中获取模块、函数等的 F# 名称
我继续为 F# 引用表达式开发打印机,它不一定是完美的,但我想看看有什么可能。用于分解引用表达式的活动模式通常会在适当时提供Microsoft.FSharp.Quotations.Patterns
实例,这些可用于获取属性、函数等的名称及其“声明”类型,例如模块或静态类。问题是,我只知道如何从这些实例中获取,但我想要 F# 名称。例如,Microsoft.FSharp.Quotations.DerivedPatterns
MemberInfo
CompiledName
如何将这个匹配重写为 return ("List", "mapi")
?可能吗?
仅供参考,这是我在 Stringer Bell 和 pblasucci 帮助下的最终完善解决方案: