-
5 votesanswersviews
类型推断失败:没有足够的信息来推断参数请明确指定它
我正在尝试在Kotlin写一个Vaadin应用程序 . 对于数据绑定,Vaadin 8现在提供了类型安全数据绑定的可能性 . 在Kotlin我会期待这样的工作: class LoginModel { var username: String = "" var password: String = "" } class LoginView :... -
5 votesanswersviews
Scala的map()在映射到相同类型时是否应该有不同的行为?
在Scala Collections框架中,我认为有些行为在使用 map() 时是违反直觉的 . 我们可以区分(不可变)集合上的两种转换 . 那些实现调用 newBuilder 来重新创建生成的集合,以及那些通过隐式 CanBuildFrom 来获取构建器的人 . 第一个类别包含所有转换,其中包含的元素的类型不会更改 . 例如,它们是 filter , partition , drop , tak... -
2 votesanswersviews
Scala:类型推断和子类型/更高级的类型
我一直在和Scalaz一起玩,以获得scala的一点点haskell感觉 . 为了理解scala中的工作原理,我开始自己实现各种代数结构,并且遇到了Scalaz人员提到过的行为 . 这是我实现仿函数的示例代码: trait Functor[M[_]] { def fmap[A, B](a: M[A], b: A => B): M[B] } sealed abstract class F... -
0 votesanswersviews
OCaml检查一个元素是否存在于元组的右侧
我目前正在尝试使用OCaml语言实现类型推断算法(统一算法) . 我遇到了一些实施方面的困难,并希望有人能够给我一些帮助 . 让我提供一些我正在尝试实施的背景信息 . [(TypeVar "t1", TypeFunc (TypeVar "t2", TypeVar "t3"))] 此 (type * type) list 类型是表达相等性... -
243 votesanswersviews
Collections.emptyList()返回List <Object>?
我在导航Java规则以推断泛型类型参数时遇到了一些麻烦 . 考虑以下类,它具有可选的list参数: import java.util.Collections; import java.util.List; public class Person { private String name; private List<String> nicknames; public P... -
0 votesanswersviews
F#模式匹配问题?
与F#进行模式匹配时遇到问题 . 我正在构建一个F#库,到目前为止这个: namespace parser module parse = let public y = function | x when x.Contains("hi") -> "HELLO" | x when x.Contai... -
3 votesanswersviews
当所有使用的类型先前已知时,为什么此代码段导致“查找不确定类型的对象...”?
我在VS2013上使用F#3.1 . 以下代码导致以下错误消息 “根据此程序点之前的信息查找不确定类型的对象 . 在此程序点之前可能需要类型注释来约束对象的类型 . 这可以允许解析查找 . ” 我无法弄清楚为什么会发生这种情况,因为这里使用的所有类型都是众所周知的(来自.Net框架本身) . 谁能让我光明好吗? open System.IO open System.Collections.Gene... -
7 votesanswersviews
如何将LanguagePrimitives.GenericZero / get_Zero添加到System.String?
注意:我最后添加了很多 Of interest 评论 . 这些并不意味着建议人们应该使用 inline 和 static type parameters willy nilly,因此他们不必花费数小时来搜索与此问题相关的大量SO问题,以便更好地理解这些概念 . 我知道当需要使函数通用并且需要零(0)值时,F#提供GenericZero . 解析为任何原始数字类型的零值或具有名为Zero的静态成... -
1 votesanswersviews
带抽象类的通配符类型推断
在改进我的F#的过程中,我一直在尝试类型推断和generics 我经常对在abstract classes和interfaces中为抽象方法准备类型签名所需的工作感到困惑,因为(a)类型签名是一团糟,(b)当我不确切知道类型签名的样子时(我通常从抽象类开始然后派生) . 这是(b)场景的玩具示例,我不喜欢该类来呈现事件( feedAvailable )并且有两个返回单位的操作( Activate ... -
3 votesanswersviews
F#中泛型类型的通用人工操作
我发现了一篇很好的文章:http://nut-cracker.azurewebsites.net/blog/2011/08/09/operator-overloading/ 并决定使用文章中提供的信息与F#进行一些比较 . 我创建了自己的类型Vector2D <'a>,支持常量的加法和乘法: type Vector2D<'a> = Vector2D of 'a * 'a ... -
4 votesanswersviews
如何使用重载的静态运算符
我在F#中编写了一个小的矩阵库(主要是包装器方法),并且有关于静态操作符方法重载的问题,F#选择了一个我不想要的重载 . 我有一个模块,我已经定义了矩阵与向量的右乘法: [<AutoOpen>] module MatrixOps = let (*) (matrix : IMatrix) (vector : IVector) = (...) 这让我可以写下像A * v其中A是... -
3 votesanswersviews
为什么F#无法像C#那样推断出类型
从the book by Tomas Petricek开始,以下代码不起作用,因为编译器无法推断出 dt 参数的类型: > Option.map (fun dt -> dt.Year) (Some(DateTime.Now));; error FS0072: Lookup on object of indeterminate type. 如果我们明确指定类型一切正常: > Op... -
3 votesanswersviews
在F#中明确指定参数类型
我正在编写一个F#函数,将一个数字分解为素数因子 . let factors primes i = let mutable j = i for p in primes do while (j>1) && (j%p=0) do j <- j/p printfn "prime: %... -
2 votesanswersviews
简单的F#运行时泛型函数与类型约束无法解析
我有一个基本功能,有一个通用参数: let func<'T> (x:'T when 'T : (static member op_Explicit: 'T -> float) ) = float x 为什么我收到错误:“由于在编译时无法解析类型参数,因此无法使用声明的类型参数'T 在这个例子中,我已经阅读了所有与F#中的泛型相关的MSDN文档,但它们似乎只是在圈内,并不符... -
8 votesanswersviews
F#如何帮助打字推断?
在Don Syme,Adam Granicz和Antonio Cisternino撰写的Expert F# 2.0中 . 44 类型推断:使用|>运算符可以输入从输入对象到操作这些对象的函数的信息流 . F#使用从类型推断收集的信息来解析一些语言结构,例如属性访问和方法重载 . 这依赖于通过程序文本从左到右传播的信息 . 特别是,在解决属性访问和过载时,不考虑位置右侧的类型信息 . ... -
2 votesanswersviews
F#类型推断错过了给定的信息
如果我声明这个F#函数: let extractColumn col (grid : List<Map<string, string>>) = List.map (fun row -> row.[col]) grid 编译器抱怨: 错误FS0752:运算符'expr . [idx]'已根据此程序点之前的信息用于不确定类型的对象 . 考虑添加其他类型约束 ... -
0 votesanswersviews
使用显式指定的泛型参数推断通用约束
考虑以下代码: let f<'a when 'a:comparison> (x: 'a) = () let g x = f x let h<'b> (x: 'b) = f x 函数 f 具有通过比较约束的通用参数 .在函数 g 中,我只使用 f 并让编译器推断它正确执行的泛型参数,从而产生 g: 'a -> unit when 'a : comparison . ... -
11 votesanswersviews
以CS101学生可以理解的方式描述Damas-Milner类型推断
Hindley-Milner是一种类型系统,是许多众所周知的函数式编程语言的类型系统的基础 . Damas-Milner是一种在Hindley-Milner型系统中推断(推导?)类型的算法 . Wikipedia给出了算法的描述,据我所知,该算法相当于一个单词:"unification."这就是它的全部内容吗?如果是这样,那意味着有趣的部分是类型系统本身而不是类型推断系统 .... -
17 votesanswersviews
Damas-Hindley-Milner类型推理算法实现
我正在寻找有关着名的Damas-Hindley-Milner algorithm函数语言类型推断的信息,特别是有关实现的信息 . 我已经知道如何做Algorithm W,但我听说最近基于约束生成器/求解器的新算法而不是通常的统一 . 但是,我无法找到有关这些新算法实现的任何讨论 . 我知道在哪里可以找到有关ML推理的部分信息吗? -
1 votesanswersviews
函数类型参数的TypeScript类型推断基于其参数类型
我正在尝试在TypeScript中声明一个函数 fun ,该函数使用其类型参数 T 作为约束,可以将哪些键用作另一个函数的参数 context.Foo : interface Context<T> { Foo(key: keyof T) } function fun<T>(provider: (context: Context<T>) => T)... -
145 votesanswersviews
为什么C#构造函数不能推断类型?
为什么构造函数不支持类型推断,就像通用方法一样? public class MyType<T> { private readonly T field; public MyType(T value) { field = value; } } var obj = new MyType(42); // why can't type inference work out that... -
45 votesanswersviews
具有通用参数类型的函数
我试图弄清楚如何定义一个适用于多种类型参数的函数(例如int和int64) . 据我所知,F#中无法实现函数重载(当然编译器会抱怨) . 以下面的功能为例 . let sqrt_int = function | n:int -> int (sqrt (float n)) | n:int64 -> int64 (sqrt (float n)) 编译器当然抱怨语法无效... -
406 votesanswersviews
在C#中使用var关键字
在与同事讨论了在C#3中使用'var'关键字后,我想知道人们对通过var的类型推断的适当用途有什么看法? 例如,我在可疑的情况下懒得使用var,例如:- foreach(var item in someList) { // ... } // Type of 'item' not clear. var something = someObject.SomeProperty; // Type of '... -
2 votesanswersviews
传递给泛型函数包装器(如_.debounce)的函数的类型推断
在TypeScript中,如果函数表达式作为参数传递,则其参数的类型将被完美推断: var foo = (fn: (a: string) => void) => {}; foo(a => { // a is inferred to be a string alert(a.toLowerCase()); }); 这对事件处理程序和其他回调非常方便 . 但是,如... -
11 votesanswersviews
强制泛型和接口上的F#类型推断保持松散
我们这里真的很开心 . 我已经在数据的具体表示上测试了一堆树同步代码,现在我需要对它进行抽象,以便它可以运行任何支持正确方法的源和目标 . [实际上,这将是Documentum,SQL层次结构和文件系统等来源;使用Solr和自定义SQL交叉引用存储等目标 . 棘手的部分是,当我递归一个 T 类型的树并同步到 U 类型的树时,在某些文件中,我需要在当前节点处对该类型 U 执行"sub-s... -
9 votesanswersviews
GHC 7.7中引入的自由覆盖条件打破了GHC 7.6中有效的代码
The idea 我正在写一个DSL,它编译成Haskell . 该语言的用户可以定义自己的不可变数据结构和相关功能 . 通过关联函数,我指的是属于数据结构的函数 . 例如,用户可以写(以“pythonic”伪代码): data Vector a: x,y,z :: a def method1(self, x): return x (这相当于下面的代码,但也显示了相关函数be... -
16 votesanswersviews
`([] ==)[]`的类型如何推断出haskell?
这听起来很傻,但我无法得到它 . 为什么表达式[] == []可以输入?更具体地说,哪种类型(在类Eq中)被推断为列表元素的类型? 在ghci会话中,我看到以下内容: Prelude> :t (==[]) (==[]) :: (Eq [a]) => [a] -> Bool 但约束 Eq [a] 也暗示 Eq a ,如下所示: Prelude> (==[]) ([]::[I... -
6 votesanswersviews
在haskell中,为什么我需要指定类型约束,为什么编译器不能解决它们?
考虑一下这个功能 add a b = a + b 这有效: *Main> add 1 2 3 但是,如果我添加一个类型签名,指定我想添加相同类型的东西: add :: a -> a -> a add a b = a + b 我收到一个错误: test.hs:3:10: Could not deduce (Num a) from the context () ... -
1 votesanswersviews
使用WebFlux WebTestClient和Kotlin键入干扰问题
我正在使用Spring Webflux和Kotlin为新应用程序构建原型 . Spring Webflux包含用于单元测试的WebTestClient . 根据文档,我应该能够像这样测试REST调用的结果: @Test fun getVersion_SingleResult_ContentTypeJson_StatusCodeOk_ContentEqualsVersion() { //g... -
406 votesanswersviews
在C#中使用var关键字
在与同事讨论了在C#3中使用'var'关键字后,我想知道人们对通过var的类型推断的适当用法有什么看法? 例如,我在可疑的情况下懒得使用var,例如:- foreach(var item in someList) { // ... } // Type of 'item' not clear. var something = someObject.SomeProperty; // Type of '...