【发布时间】:2013-06-16 10:56:25
【问题描述】:
我了解 compose 运算符采用两个函数,它们都接受并返回相同的类型。例如(lhs:'a -> 'a) -> (rhs:'a -> 'a) -> 'a
我经常发现自己想要(lhs:'a -> 'b) -> (rhs:'c -> 'b) -> 'b 之类的东西,以防我对副作用感兴趣,而不是返回值 'b 可能是单位类型。仅当我连续两行将某些内容持久化到数据库时。
是否有内置函数或惯用的 F# 方式来执行此操作而无需编写类似的内容
let myCompose lhs rhs arg =
lhs arg
rhs arg
【问题讨论】:
-
我从
fsi得到:val myCompose : lhs:('a -> unit) -> rhs:('a -> 'b) -> arg:'a -> 'b。你确定这就是你的意思吗? -
我不确定您对
<<运算符的看法。从 FSharp.Core 源 (prim-types.fsi),它的类型是:val inline (<<): func2:('T2 -> 'T3) -> func1:('T1 -> 'T2) -> ('T1 -> 'T3)