如何将Haskell与OSRM库结合使用?

如何将Haskell与OSRM库结合使用?,haskell,ffi,osrm,Haskell,Ffi,Osrm,我们希望使用libOSRM进行路由。目前我们正在调用它的http服务。为了获得更好的性能,我想调用它的动态库。在阅读Haskell FFI时,我想我可以用Haskell代码编译并链接其源代码(而不是编译的动态库)。 1.哪种方法更好? 2.我如何做每一个选择 请注意,OSRM中充满了我不确定如何导入haskell的结构。c2hsc未安装(阴谋集团引发错误!)。另一方面,我不知道如何链接整个OSRM源代码 您可以查看该项目仅为PoC,并使用HTTP OSRM API而不是Haskell FFI。您

我们希望使用libOSRM进行路由。目前我们正在调用它的http服务。为了获得更好的性能,我想调用它的动态库。在阅读Haskell FFI时,我想我可以用Haskell代码编译并链接其源代码(而不是编译的动态库)。 1.哪种方法更好? 2.我如何做每一个选择


请注意,OSRM中充满了我不确定如何导入haskell的结构。c2hsc未安装(阴谋集团引发错误!)。另一方面,我不知道如何链接整个OSRM源代码

您可以查看该项目仅为PoC,并使用HTTP OSRM API而不是Haskell FFI。

您可以查看该项目仅为PoC,并使用HTTP OSRM API而不是Haskell FFI。

我原型化了一些Haskell绑定,这些绑定将通过API和ABI兼容的C包装器执行:

您可以尝试一下,然后发送请求。它只公开了API的一小部分,并且基于OSRM 5.4版;你可能需要投入一些时间。但总体架构和理念仍然适用。是Haskell绑定


我建议您仔细考虑使用Haskell使用libosrm/FFI的方式,而不是发送HTTP请求:如果值得麻烦的话,请提前进行基准测试。

我通过API和ABI兼容的C包装器原型化了一些Haskell绑定:

您可以尝试一下,然后发送请求。它只公开了API的一小部分,并且基于OSRM 5.4版;你可能需要投入一些时间。但总体架构和理念仍然适用。是Haskell绑定


我建议您仔细考虑使用Haskell使用libosrm/FFI的方式,而不是发送HTTP请求:如果值得的话,请提前进行基准测试。

嗯,您需要编写绑定。如上所述,您需要编写绑定。至于如何做到这一点,什么是最好的,等等:这些将是相当长的答案,涵盖了广泛的主题,并且可能最终还是特定于您的用例。请查看Haskell FFI文档,因此这不是解决此类问题的正确位置。好吧,您需要编写绑定。如上所述,您需要编写绑定。至于如何做到这一点,什么是最好的,等等:这些将是相当长的答案,涵盖了广泛的主题,并且可能最终还是特定于您的用例。请查看Haskell FFI文档,这并不是解决这类问题的好地方。我严格告诉过你我想使用libosrm和FFI!我严格地说我想使用libosrm和FFI!谢谢你指点这个项目。我有一些问题:我们是否必须在C中包装OSRM,然后在Haskell中使用它?是否可以使用动态库(so、dylib、dll)并使用hpp文件创建适当的结构?另一点:我想这是值得麻烦的,因为OSRM速度非常快,http tcp开销是一个明显的负载!FFI绑定需要C包装器,并且需要有稳定的ABI和API。直接包装C++ LybBrm不是我能推荐的。谢谢指点这个项目。我有一些问题:我们是否必须在C中包装OSRM,然后在Haskell中使用它?是否可以使用动态库(so、dylib、dll)并使用hpp文件创建适当的结构?另一点:我想这是值得麻烦的,因为OSRM速度非常快,http tcp开销是一个明显的负载!FFI绑定需要C包装器,并且需要有稳定的ABI和API。直接包装C++ LybBrm不是我能推荐的。