0

我正在尝试创建一个由主要参数组成的管道,该参数是一个带有常量的列表。

作为一个简单的例子

type ClockType = | In | Out
let ClockMap index offset = 
    match index with
    | index when index + offset % 2 = 0 -> In
    | _ -> Out
 let MapIt offset = [0 .. 23] |> List.map offset

当我取出offset. 我试过做 atuple但它不喜欢int list. 解决此问题的最佳方法是什么?

我只是在学习 F#,所以请耐心等待。

4

1 回答 1

3

这就是你所追求的吗?

type ClockType = In | Out
let clockMap offset index = if (index + offset) % 2 = 0 then In else Out
let mapIt offset = [0 .. 23] |> List.map (clockMap offset)

输出将是:

mapIt 3 |> printfn "%A"
// [Out; In; Out; In; Out; In; Out; In; Out; In; Out; In; Out; In; Out; In; Out;
//  In; Out; In; Out; In; Out; In]

如果是这样,则存在多个问题:

  • clockMap的参数是向后的
  • %优先级高于+
  • clockMap从未被调用(并且offset需要部分应用于clockMap

matchto的更改if纯粹是为了可读性,并且习惯上,非文字let绑定值以小写字符开头(类型名称和类属性/方法以大写开头)。

于 2013-04-19T21:26:26.420 回答