我正在尝试创建一个由主参数组成的管道,该参数是一个带常量的列表。
作为一个简单的例子
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#所以请耐心等待。
答案 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
)从match
到if
的更改纯粹是为了便于阅读,而惯用的非文字let
绑定值以小写字符开头(类型名称和类属性/方法以大写字母开头) )。