代码之家  ›  专栏  ›  技术社区  ›  Roman Pokrovskij Archil Labadze

新工具集:原始F模块或从OCAML移植

  •  4
  • Roman Pokrovskij Archil Labadze  · 技术社区  · 15 年前

    只有当我能使用新的库时,新的语言才是有趣的。所以我想知道在.net中使用f_可以使用哪些新库。如果f与ml/ocaml兼容,那么什么ocaml库被移植到f或可以被移植。我对.net中的信号处理/语音识别、逻辑编程/sld分辨率库很感兴趣。

    3 回复  |  直到 15 年前
        1
  •  12
  •   Tomas Petricek    15 年前

    我不认为有大量的ml/ocaml库已经移植到f_。f编程风格已经与人们在ml/ocaml中使用的风格大不相同,因此对于f程序员来说,ml/ocaml库有点陌生。

    然而,有些项目是用f_和ocaml交叉编译的。f编译器本身曾经是这样的,我相信 Slayer 是(还是曾经?)另一个例子。但是,对于您提到的两个域,我不知道周围有什么f库。

    如果您对用f_编译ocaml代码感兴趣,那么以下几点可以帮助您:

    • 将ocaml代码移植到f时,更大的语言限制是f不支持函子。
    • 一些标准的ocaml库在 FSharp.PowerPack.Compatibility.dll 程序集(可以在 F# PowerPack )
        2
  •  11
  •   J D    15 年前

    f包括来自ocaml的一些端口,例如 Set Map 收藏。其他 混凝土 数据结构可以很容易地移植,例如 Chris Okasaki's excellent monograph . 我描述了一个基于他的左派堆的堆排序 here 在ocaml和f中。我在f中发表了对几个纯功能堆的更彻底的评论# here . 然而,f似乎不能很好地表达抽象数据结构(例如,通过队列抽象的可分类列表),因为它缺乏冈崎如此熟练地使用的高阶模块系统。我还发布了其他一些类似的翻译 Burrows-Wheeler transform 在ocaml和f中。 ocaml有很多很棒的库,比如 ocamlgraph 但它们通常很难或不可能直接翻译,因为f缺乏诸如高阶模块、多态变体、宏等核心语言特性。

    当然,微软是第一个采用这种技术的公司, TrueSkill ranking system (用于Halo 3和Bing Adcenter)及其从OCAML到F_的第三方驱动程序验证软件。

    这个 Coherent PDF 用于处理pdf文档的命令行工具是在ocaml和f_中交叉编译的少数代码库之一。

    我们翻译了 Smoke Vector Graphics 引擎和我们(已停止)的从ocaml到f的Presenta应用程序,现在作为 F# for Visualization . 由于两种语言之间的相似性,翻译当然变得容易了,但仍然需要几天的时间,而且我们不可能交叉编译。

    大多数从ocaml翻译成f的代码都是商业性的,因为f主要是一种商业语言,因此,ocaml的商业用户正在迁移到f。开源软件f可能在f本身作为oss的最新版本发布后开始腾飞,但现在还为时过早。

    至于您的特定主题(例如,信号处理),除了绑定到fftw之外,我不确定推荐什么,我在 Visual F# 2010 for Technical Computing .

        3
  •  1
  •   Roman Pokrovskij Archil Labadze    15 年前

    我发现了一个支持进化算法开发的库。

    F人工智能库——差异进化的实现: http://fsai.codeplex.com/documentation?version=11

    关于进化算法: http://en.wikipedia.org/wiki/Evolutionary_algorithm

    此外,还有一个关于“很高兴在f_上有”sld分辨率引擎的简短讨论(还有一个到prolog的链接被移植到c_) http://cs.hubfs.net/forums/thread/6676.aspx

    这就是全部。。。

    推荐文章