我把一些F#代码ocaml的,我看到很多这样的管道运营商<|
的用途,例如:转换F#管道运营商(<|, >>,<<)来OCaml的
let printPeg expr =
printfn "%s" <| pegToString expr
的<|
运营商显然是指刚:
# let (<|) a b = a b ;;
val (<|) : ('a -> 'b) -> 'a -> 'b = <fun>
我不知道为什么他们懒得定义和使用该运营商在F#中,它只是使他们能够避免将在这样的括号?:
let printPeg expr =
Printf.printf "%s" (pegToString expr)
据我所知,这将是上面的F#代码到OCaml的转换,是正确的吗?
另外,如何在Ocaml中实现F#的<<
和>>
运算符?
(在|>
运营商似乎仅仅是:let (|>) a b = b a ;;
)
出于好奇,我花了很多时间从OCaml转换到F#,因为OCaml中有大量的开放代码,易于翻译为F#,能够使用Visual Studio以及在这里支持,有什么好处你从F#转到OCaml会获益吗? –
@GuyCoder:首先,我不在Windows上。我在Linux上开发。我想我可以使用Mono在Linux上开发F#,但我更熟悉OCaml及其工具链,我想我不想依赖Mono运行时。我也喜欢OCaml的一些功能,F#缺少仿函数和一流的模块。是的,我注意到有很多关于从OCaml到F#的信息,但没有太多其他方面的信息。我们需要某种兼容性库/图层。 – aneccodeal
您是否知道[FSharp.PowerPack.Compatibility.dll](https://github.com/fsharp/powerpack/tree/master/src/FSharp.PowerPack.Compatibility)?它并不包含所有内容,但它确实有帮助。我目前正在使用函数来翻译ML代码,这是我第一次使用函子来看待它的吸引力,而且我真的很喜欢[时间旅行](http://caml.inria.fr/pub/docs/manual-ocaml- 4.00/manual030.html)调试OCaml的功能。 OCaml有很多提供,我会推荐它像F#一样频繁。 :) –