Compiler errors 学习F#并尝试理解语法
我是新来的F#如果有人能向我解释这个错误,请 [4; 5; 2; 7] :: 3;; stdin(4,17):错误FS0001:此表达式应具有类型 “整数列表”Compiler errors 学习F#并尝试理解语法,compiler-errors,f#,Compiler Errors,F#,我是新来的F#如果有人能向我解释这个错误,请 [4; 5; 2; 7] :: 3;; stdin(4,17):错误FS0001:此表达式应具有类型 “整数列表” 但这里有一种类型 “int”错误消息有点令人困惑,但编译器认为您试图做的是将consint列表转换为整数,这是不可能的 在F#中,:用于将左侧的元素添加到右侧的列表中。有关更多详细信息,请参阅。列表以F#单独链接,这意味着添加到前面很简单,但添加到末尾却不那么容易 要正确使用::,您应该将表达式倒置:3::[4;5;6;7]。这将产生[
但这里有一种类型
“int”错误消息有点令人困惑,但编译器认为您试图做的是将
cons
int列表转换为整数,这是不可能的
在F#中,:
用于将左侧的元素添加到右侧的列表中。有关更多详细信息,请参阅。列表以F#单独链接,这意味着添加到前面很简单,但添加到末尾却不那么容易
要正确使用::
,您应该将表达式倒置:3::[4;5;6;7]
。这将产生[3;4;5;6;7]
错误代码在第4行,char 17(您只报告有问题的行,可能是代码中的第4行。)stdin(4,17):
- char 17指向
——这是编译器抱怨的“表达式”的开头3
- 该表达式被推断为类型
(这是正确的)int
- 前面的表达式是
(int-list
)作为cons([4;5;2;7]
)的项-前置到项类型的列表上-因此编译器推断并期望:
的列表-即int-list
,也就是说,类似的东西可以工作:int-list-list
这将产生[4;5;2;7]:[[3]]
[4;5;2;7];[3]
- 因此,它期望在cons
之后有一个:
类型,但会看到一个int列表
,因此会出现错误消息int
- 猜测你可能来自C#背景,你可能想
,这将产生3::[4;5;2;7]
。现在项目类型是[3;4;5;2;7]
,项目类型列表是int
,编译器很高兴int list