我有一些Scala类型推理的麻烦。 在下面的工作表示例中,我定义了一个将任意值映射到返回单位值的函数的映射。 有趣的是,当我尝试仅使用一行代码定义相同的地图时,它不起作用,因为'bar'函数的返回类型突然更改为Any而不是Unit。 type UnitFun = (Any) => Unit
val foo = "foo"
val bar = (a: Any) => System.out.pr
let inline set (x: ^t) = BitConverter.ToUInt32(BitConverter.GetBytes(x),0)
我试过类似上面的东西,但它不起作用。输入约束或运行时解析类型也不行。另外,我猜测答案是否定的,但是有可能告诉编译器泛型类型只是float32或float吗?这会节省我很多麻烦。 编辑: 我感到意外的是什么托马斯Petricek所写的作品而反向不会
以下收率 此构建体将导致代码为比由所述类型注释指示较少通用的。类型变量'P被限制为类型'bool'。 为let myValue =表达的右侧,并 此代码比要求及其注释,因为明确的类型变量“P”不能一概而论较少通用的。它被限制为'布尔'。 在Value方法一般<'P>: type MyTypeA<'T> (myObject : 'T) as this =
let myValue = thi
试图创造一个Vector类型类上我碰到的元组工作一些问题 {-# LANGUAGE TypeFamilies, FlexibleInstances #-}
class Vector v where
type Scalar v :: *
vplus :: v -> v -> v
vmult :: v -> Scalar v -> v
vdot :: v -
我已经定义了以下类型(从代码简化): type Polynomial<'a when 'a :(static member public Zero : 'a)
and 'a: (static member (+): 'a*'a -> 'a)
and 'a : (static member (*): 'a*'a -> 'a) > =
| Polynomial
我想编写一个采用嵌套类型的泛型类。外部类型(I)必须扩展Iterable,内部类型(M)可以是任何东西。 这里是我有例子: // The outer type here is I and the inner type is M
class GenericDistributor[I <: Iterable[M], M] {
def map(input: I): Unit = {
代码 default()
h :: Bool
h = 1.0 == 1.0 --Error. Ambiguity.
不能编译。这是预料之中的,因为有歧义。它可以是Float或Double,Haskell不知道我们想要哪一个。 但代码 default()
foo :: (Fractional a, Eq a) => a -> Bool
foo x = x == 1.0
编译成功。我不