学习F#语法时遇到FS0001类型错误,求错误产生原因解析
F# 代码报错FS0001原因说明
首先明确F#中::运算符的定义:
::是拼接运算符,要求左侧为单个元素,右侧为和该元素类型一致的列表,作用是将左侧元素插入到右侧列表的最开头,返回新的列表。
你的代码[4; 5; 2; 7] :: 3;;存在类型匹配错误:
你把int list类型的列表[4; 5; 2; 7]放在了::左侧,编译器会默认认为右侧应该对应int list list类型(即元素为int列表的列表)才能符合运算符的类型要求,但你右侧实际填写的是int类型的数值3,完全不符合类型匹配规则,因此触发对应的类型报错。
如果你需要实现的是把3插入到[4; 5; 2; 7]的开头,正确写法为:
3 :: [4; 5; 2; 7];;
运行后会返回正确结果[3; 4; 5; 2; 7]。
内容的提问来源于stack exchange,提问作者Matthew Marty Lopez
相关产品推荐
相关产品推荐

