我写Haskell代码练习尾递归逆一个列表并想出了这个解决方案: reverseh' [] list = list
reverseh' (x:xs) list = reverseh' (xs) (x ++ list)
reverse' x = reverseh' x []
只与名单列表的作品,但我想它是有类型签名[a] -> [a]。 你能解释我在做什么错吗?
我目前编码在斯卡拉,我认为我的自我是一个新手。 我有3个班级超出了我的控制范围,这意味着我无法更改它们。 class P
class A {
def m(p: P): A = { println("A.m"); this }
}
class B {
def m(p: P): B = { println("B.m"); this }
}
这是一个简化的例子,实际的
在下面的代码段 class T {}
var dummy : Int = Int.init()
class S : T{
override init() {
super.init()
var dummy2 :() = Int.init()
}
}
dummy的类型是Int,但dummy2类型是()。 如果从相同的表达式推断出它们的类型如何不同?
let rec getElement list index = match list with
| [] -> raise OutOfBoundException
| first::elems -> if index = 0 then first else getElement elems index-1;;
我不明白为什么这个函数类型(INT列表 - > INT - > INT),而不是