【发布时间】:2018-06-01 19:17:28
【问题描述】:
我正在尝试创建一个大小为 n 的列表,从一个更大的、已创建的列表中提取元素。 我收到一条错误消息: 此值不是函数,不能应用。 此表达式的模式匹配不完整。例如,值“[]”可能表示模式未涵盖的情况。 7,16
谁能帮忙看看我做错了什么?另外,我正在尝试理解 F#,所以我真的不想要任何可以满足我要求的东西,除非它是一种仅供参考的东西。但我仍然需要帮助创建一个函数来执行此操作。
//create a list of size n from beginning of a dataset
let populateList n =
let starterList = []
let data = [1;2;3;4;5;6;7;8]
let rec helper count aList =
let head::tail = aList
if count < k then head :: helper count+1 tail else []
helper 0 data
populateList 3
【问题讨论】:
-
您能根据您的输入显示预期的输出吗?
-
预期输出应为 [1;2;3]
-
List.take 3 data,您可以探索该函数的作用。 -
好的,但我也在尝试编写一个没有内置功能的函数 b/c 我仍在学习函数式编程
-
@JLRishe 有正确的答案:您遇到了运算符优先级。函数调用比运算符绑定得更紧密,因此您可以执行
firstFunction firstParam + secondFunction secondParam之类的操作并得到您可能期望的结果:这两个函数调用的结果将相加。但是,在您的情况下,您需要(count+1)周围的括号。
标签: f# f#-interactive