syntax-error - 我是否正确理解了该功能及其用途?另外,语法错误?
问题描述
我无法理解为什么我不断收到此函数的语法错误。它返回一个 int,使得 n_times (f,n,v) 将 f 应用于 vn 次。例如,n_times((fun x-> x+1), 50, 0) = 50。如果 n<=0 返回 v。
let rec n_times (f, n, v) =
(* YOUR CODE HERE *)
raise (Failure "Not implemented")
assert (n_times((fun x-> x+1), 50, 0) = 50)
这是我编码的内容:
let rec n_times (f, n, v) =
(* YOUR CODE HERE *)
|n<=0 -> f v
|n>0 -> f v * n_times(f, n, v)
let f() = (Failure "Not implemented2")
let f() = assert (n_times((fun x-> x+1), 50, 0) = 50)
我相信这个函数 v 被乘以 n 倍。我理解对了吗?另外我不明白为什么我的代码的第一行给我一个语法错误?
解决方案
你似乎在写一个match
表达式,但你只有最后一部分(有不同的选择),而不是第一部分(它说match ... with
)。因此,|
令牌在您的代码中出现时是不允许的。
作为第二条评论,该match
语句采用模式,而n <= 0
不是模式。这是一个布尔表达式。
因此,您更有可能只想使用if
语句。
推荐阅读
- rx-java2 - doOnDispose() 使用哪个 RxJava 调度程序?
- rest - 如何设计一个可扩展的 restful / Non-restful API?
- ios - 解码错误:无法读取数据。阿拉莫菲尔
- php - Angular 5 中基于 cookie 的身份验证
- python - 通过循环问题保存 .txt
- vue.js - IE 11 中的 VueJS - 不工作的模板包装器,适用于 Edge 和 Chrome
- vba - “无法访问文件”1004 导出工作表错误 VBA
- bluetooth-lowenergy - 在 BLE 设备的扫描响应数据包中获取 MAC 地址
- sql - SQL SERVER 将多行多列组合成单行单列
- sql - 如何通过自动开始日期和持续时间列创建更新结束日期的内容 SQL