所以我收到以下错误消息:
The type '('a list -> 'b list)' is not compatible with any of the types
byte,int16,int32,int64,sbyte,uint16,uint32,uint64,nativeint,unativeint,
arising from the use of a printf-style format string
这是设置它的代码:
let rec multC c = function
| [] -> []
| head::tail -> c * head::multC c tail
let p1 = [1; 2; 3];;
let resMultC = multC p1
printfn "resMultC: %d" resMultC
我无法为我的爱找出为什么它不会打印它,我认为这是错误的意思。任何提示?
答案 0 :(得分:2)
如果您在FSI中检查multC
签名c:int -> _arg1:int list -> int list
。这意味着它需要两个参数(一个显式声明为c
,另一个隐式来自function
声明)。
那说你的代码的问题是你只提供一个参数
let resMultC = multC p1
而不是两个
let resMultC = multC 2 p1 // [2; 4; 6]
但即使是现在最后一次调用也不会编译,因为您尝试使用int格式化程序(%d
)打印列表。使用%A
代替F#特定类型:
printfn "resMultC: %A" resMultC // resMultC: [2; 4; 6]