type-constraints相关内容
我试图写一些似乎与“排名2”类似的东西,而不是约束。 (或者,假设在“rank 2 types”的定义中将 - > 更改为 => 是有意义的;如果你想得到更好的术语,请编辑该问题)。 setup 首先, 合适 typeclass(来自 Data.Suitable ,rmonad的基础)可以用来表示可以使用的值的类型。在这个问题中,我将使用 合适的ma 表示值 a
..
我试图用类型族来表示表达式,但我似乎无法弄清楚如何编写我想要的约束,而我开始觉得这是不可能的。这里是我的代码: class可评估的c其中 类型返回c :: * 评估:: c - >返回c 数据否定n =否定n 实例(可评估n,返回n〜Int)=>可评估的(Negate n)其中 类型Return(Negate n)=返回n 评估(Negative n)=否定(评估n)
..
我的程序中编译了以下代码: { - #LANGUAGE FlexibleContexts# - } { - #LANGUAGE GADTs# - } { - #LANGUAGE KindSignatures# - } { - #LANGUAGE StandaloneDeriving# - } { - #LANGUAGE TypeFamilies# - } class
..
假设我想让所有数字都是 Monoid 的一个实例。而不是像这样为每个 Num 创建一个实例: 实例Monoid Int其中 mappend =(+) mempty = 0 实例Monoid Float其中 mappend =(+) mempty = 0.0 - etc 有没有这样的事情? 实例Num t => Monoid t其中 map
..
class(Context(Associated) ab))=>类别a其中 数据关联a :: * - > * 实例上下文(Associated ab)其中 func1 =错误“func1” 然而,不在范围内的自由变量 b 阻止了我这样做。其中一个解决方案是从 Context 复制类的功能,但它看起来很难看。 class Class a where data
..
在处理类型族时,通常使用等号约束来避免在签名中重复某些类型函数的名称: class Foo f where type BulkyAssociatedType f :: * foo :: BulkyAssociatedType f - > f ... bar :: forall m f b。 (Monad m,Foo f,b〜BulkyAssociatedType f
..
对于不确定性传播大约类型,我想有 Functor 到 Monad 。但是这不起作用,因为我需要一个包含类型的向量空间结构,所以它实际上必须是这些类的受限版本。因为对于那些人来说,似乎还没有一个标准的图书馆(或者是那里?请指点一下。有 rmonad ,但它使用 * 而不是约束作为上下文种类,这似乎只是过时了),我暂时写了我自己的版本。 对于 Functor class CFunctor
..
这是另一个问题的后续行动,我收到了很多很棒的评论和答案。 假设我有以下抽象类: public abstract class Entity :IEquatable> { public TId Id {get;保护组; } //加上IEquatable,GetHashCode覆盖等的实现。 } 我问的另一个问题是如何为实
..
我试图定义一个泛型类,它接受任何可以设置为null的类型: public abstract class BundledValue_Classes< T> 其中T:class { private Tuple _bundle = new Tuple(); public T Value { get {return _bun
..
我试图基于类型约束重载一个方法。代码如下所示: protected static void addComponent(List factors,T component) { ... } protected static
..
(作为研究回答这个问题的结果,我(认为我有!)确定答案是“不”。但是,我必须在几个不同的地方查找才能找出答案,所以我认为这个问题仍然有价值,但如果社群投票结束,我不会受到摧残。) 例如: void f (T val)其中T:IComparable { val.CompareTo(null) ; } void g() { f(4); 是 4
..
我尝试在F#中为泛型绑定到特定泛型类型参数创建各种扩展方法,但该语言似乎并不允许我: 我想要做的是如下所示: type IEnumerable with member this.foo = this.ToString() 然而,给出了编译器错误(在 int 关键字下面加上下划线): 类型名称。 以下确实可以起作用
..
我试图为一个包装类定义一个通用的加法运算符。到目前为止,我有这样的:(从实际代码中简化) type Wrap = | (+)(Wrap x,Wrap y)= Wrap(x + y) 让内联addSelf x = x + x 确实有效: let i = addSelf(Wrap 1)//返回Wrap 2 让f = addSelf(Wrap 1)/
..
如果我想创建一个将 IList 的实例作为参数(或任何其他接口,但让我们使用 IList code>作为例子),我可以创建一个类型约束的泛型方法,例如: public static void Foo1(T list)其中T:IList { } 或者,我可以创建一个直接使用 IList 参数的方法: public static void Foo2(
..
我试图创建一个泛型函数,它需要它的类型参数,它是一个记录类型,并且它有一个特定的属性。以下是一个生成相关编译器错误的示例: let foo (a:'a)= a'= {a with bar =“baz”} a' 编译此错误,我得到一个错误,指出记录标签栏未定义。 我尝试添加下面的类型约束: let foo
..
我有一个对象集合,我将其作为参数传递以创建另一种类型的对象(一对一)。我在很多地方都这样做(基本上是从数据对象转换为业务对象)。我想写一个通用的扩展方法来完成这个。但是我被卡住了,因为我不知道如何指定约束条件,即业务对象具有以数据对象为参数的构造函数。以下是我的函数的代码: public static IList ConvertTo(这个IEnumerable列
..
我有一个基类: public abstract class StuffBase { public abstract void DoSomething(); } 和两个派生类 public class Stuff1:StuffBase { public void DoSomething() { Console.WriteLine(“Stuff 1
..
interface Fooable { void someCommonMethod(); } 枚举E1实现Fooable { // someCommonMethod()的一些枚举和定义 } 枚举E2实现Fooable { // someCommonMethod()的一些不同的枚举和不同的定义 } ,然后在其他地方使用这个变量实现一个变量是Enum
..
在C#中尝试实现一个通用的 Vector2 之后,我已经做了一大堆调查问题,也在这个问题中描述: 更少的泛型泛型? C#泛型算法的可能解决方案 这些链接包含更多的背景信息和迷人的解决方案: http://www.yoda.arachsys.com/csharp/genericoperators。 html http://www.
..
在最新的模板约束中,提出了一个用于约束模板参数的新工具集。此外,在C ++ 14中提供了变量模板。变量模板允许定义类型参数化的常量等。 没有提到这些特性如何交互。使用pi的规范示例,我们可以具有: template constexpr double pi(3.141592653589793238); template
..