设计.NET API以供将来与F#一起使用的提示

时间:2010-06-07 16:34:21

标签: .net f# api-design

我正在设计.NET API,以允许开发人员为3D simulated soccer league创建RoboCup代理。

我对API如何使用C#代码非常满意,但是我想使用这个项目来提高我的F#技能(目前基于阅读而不是练习)。

所以我想问一下在设计一个由C#和F#代码使用的API时我应该考虑哪些事情。

有些观点。

  • 我大量使用矩阵和矢量数学。这些是目前不可变的类/结构。
  • API目前使用消费者实现(例如:IAgent)定义一些接口,使用其实现的实例(例如:MyAgent)来构造其他API类(例如:new Client(myAgent) })。
  • API触发事件。
  • API公开了一些委托类型。
  • API包含多个枚举。

我想尽快发布一个版本的API,如果我发现使用F#太难了,我不想在以后对它进行重大修改。任何建议都表示赞赏。

1 个答案:

答案 0 :(得分:3)

最好的建议可能是尝试使用F#中的API。 :)

那就是说,我觉得你听起来很不错

  • 任何好的C#API都应该是一个非常好的F#API
  • 在边界使用委托/ Func / Action时会有一点摩擦,但这里没有任何改变
  • 枚举,事件,接口,类,结构都很好
  • 如果可能的话,请避免使用返回通常被忽略的值的API(例如,“返回此'以便能够'链接调用'的流畅接口 - 这会导致F#需要大量|>ignore s)

但实际上,花一个小时尝试编写库的F#使用者。在最坏的情况下,你可能会建议一些辅助函数或F#的扩展方法来平滑界面边界上的任何摩擦点,但我认为你所拥有的一切都应该没问题。