问题标签 [signature-files]

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 投票
1 回答
2260 浏览

f# - F# 中的签名文件和访问修饰符

我最近一直在尝试学习 F# 的面向对象方面,并且对如何限制对语言中类型/模块的访问感到好奇。

更具体地说,我想知道写这个之间的区别:

例子.fsi

例子.fs

或者这个:

他们最终不会完成完全相同的事情吗?来自 C# 背景,我更倾向于使用访问修饰符而不是签名 (FSI) 文件。它们似乎更通用(例如,可以应用于命名空间中的模块/类型),而我没有在任何情况下签名文件提供访问修饰符不提供的东西。

0 投票
1 回答
470 浏览

f# - F#签名文件错误

我试图使用 fsi 文件来允许在单独的文件中相互递归类,但我的 fsi 文件没有编译。下面是一个演示问题的简单示例。

文件程序.fs:

文件 File1.fs:

编译--sig:signature.fsi产生:

哪个有错误就行

哪个是

0 投票
1 回答
137 浏览

f# - f#:导致 Intellisense 抱怨的签名文件?

鉴于以下代码...

... Intellisense 抱怨,并且编译器失败,如果我在其中创建一个签名文件:

错误是Error 10 Module 'MyModule' contains val myFnTrue : ('_a -> bool) when '_a :> MyModule.IMyInterface but its signature specifies val myFnTrue : (MyModule.IMyInterface -> bool) The types differ。(报告了类似的错误myFnFalse。)

我觉得自己像个白痴,无法弄清楚这一点。我究竟做错了什么?(支持“duh”的答案......)

0 投票
2 回答
464 浏览

f# - F# 签名文件和对应的实现文件中的通用函数定义

我正在尝试使用 F# 签名文件为轻量级数据存储模块创建抽象。这是我的签名文件代码,假设它被称为repository.fsi

这里是对应的实现,我们称之为repository.fs

在我的 Visual Studio 项目文件中,我的实现文件 (repository.fs) 上方有签名文件 (repository.fsi)。putremove函数正在被正确解析和验证,没有错误(在实现文件中),但fetch函数在 Visual Studio 中不断给我红色波浪,并显示以下错误消息:

模块“DataStorage.Repository”包含

但它的签名指定

各自的类型参数计数不同

有人可以告诉我我做错了什么吗?我的签名文件中的 fetch 函数值是否定义错误?我只是想在我的签名文件中创建一个通用函数('a -> 'b),并让实现将一种类型作为输入并返回另一种类型作为输出。

0 投票
1 回答
108 浏览

f# - F# 拒绝构造函数的存在(可能与类型约束相关)

在下面的代码中,F sharp 说:模块 xyz 需要一个值new : (IBlah<'a> * 'b) -> test<'a, 'b>')

我尝试将确切的构造函数作为显式的 new 提供,但它似乎没有帮助,尽管 Intellisense 虽然类型相同。我希望我不知何故弄错了约束。有人可以告诉我要更改什么以便代码编译(不删除约束)吗?非常感谢。

首先是 fsi 文件:

fs 文件是:

0 投票
1 回答
2070 浏览

f# - Automated F# Signature File (.fsi) Generation

I am working on a project that has a number of modules that I'd like to apply access control constraints to. I'd also like to have my project contain additional documentation on the type signatures of each function.

I know that I can accomplish both of these tasks very easily via F# signature files. However, my project is large and contains many files, and I need a convenient way of generating a signature file for each one. I have been successful in generating individual signature files via command line compilations using the --sig compiler option, but I am stuck on how to add compiler options to Visual Studio's build routine.

Is there a convenient way, either via VS compilation options, or via some command line script, for me to create an F# signature file for every *.fs file in my project directory?

Thanks.

0 投票
1 回答
127 浏览

inheritance - 如何从 fsharp 签名文件中的抽象类继承?

我正在尝试在 FSharp 中为域建模。我希望客户端代码能够体验对这些类型的干净访问。因此,其中一部分是通过创建签名文件 (.fsi),如下所述:https ://msdn.microsoft.com/en-us/library/dd233196.aspx

Microsoft 页面没有描述继承如何在 FSharp 签名文件中工作。我确实在这里发现了如何使用“interface”关键字指示接口实现:https ://github.com/intellifactory/websharper.ui.next/blob/master/WebSharper.UI.Next/Attr.fsi

好的。但我想更进一步,从一个抽象类继承,并在签名文件中指出这一点。

目标是多态性。在某个地方,我想要一个函数将参数“v”作为:(v : S list),其中 S 是超类型,列表可能包含其子类型的值。

但是从抽象类继承的 fsharp 签名文件中的语法是什么?

在“Artefact.fs”中,我有(是的,它是一个 Websharper 项目):

在“Visual.fsi”中,我有:

“继承”行不编译。那么正确的语法是什么?

我尝试了这些(也不起作用):

1)Artefact 之后的括号

2) Visual 后面的括号

有任何想法吗?

0 投票
0 回答
264 浏览

digital-signature - Apache felix 何时对 OSGI 捆绑包 .jar 文件执行签名验证?

我们在 apache felix 中有一个命令来安装 OSGi 包,即“felix:install Jar-file”。我的查询是:此命令是否还针对之前签署的签名对 jar 文件的内容进行验证(在安装之前)?或者我们在 Apache felix 中有任何特定的命令来做同样的事情。

如果上述任何命令不执行验证,那么我是否必须使用 OSGi 框架中的 jarsigner 工具提供的“jarsigner -verify jar-file”命令?如果是,那怎么办?

或者我是否必须在我自己的包代码中编写/嵌入一些代码/API 以进行验证,这些代码/API 可能会在安装后和解决任何包的依赖项之前运行?如果是,那么 OSGi 框架或某些 OSGi 容器实现提供的那些 API 是什么(比如Apache felix、Apache Ace、Equinox 等)?

或者它是否需要在 OSGi 包中设置任何配置,专门用于签名验证?

请分享你的一些观点。

谢谢