具有常量参数的管道列表

时间:2013-04-19 20:47:10

标签: f# pipeline

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

作为一个简单的例子

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时它会起作用。我尝试过tuple但是它不喜欢int list。最好的方法是什么?

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

1 个答案:

答案 0 :(得分: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

matchif的更改纯粹是为了便于阅读,而惯用的非文字let绑定值以小写字符开头(类型名称和类属性/方法以大写字母开头) )。