代码之家  ›  专栏  ›  技术社区  ›  Michiel Borkent

如果你已经知道LISP,为什么还要学习F#?

  •  7
  • Michiel Borkent  · 技术社区  · 17 年前

    当您已经熟悉LISP时,学习F#的附加值是什么?

    11 回复  |  直到 17 年前
        1
  •  19
  •   Nathan Shively-Sanders    17 年前

    学习F#用于现实世界的最大优势是它与.NET的集成。

        2
  •  6
  •   Community Mohan Dere    9 年前

    将Lisp直接与F#进行比较并不公平,因为在一天结束时,如果有足够的时间,你可以用两种语言编写相同的应用程序。

    然而 学习F#的原因与C#或Java开发人员学习F#的原因相同,因为它允许在.NET平台上进行函数式编程 . 我对Lisp不是100%熟悉,但我认为它与OCaml有一些相同的问题,因为没有stellar库支持。如何在Lisp中访问数据库?高性能图形呢?

    如果您想了解更多关于“为什么.NET”的信息,请查看此 SO question

        3
  •  6
  •   Andrey Fedorov    17 年前

    如果你知道F#和Lisp,你会发现这是一个相当奇怪的问题。

    正如其他人所指出的,Lisp是 动态类型 . 更重要的是,Lisp的独特功能在于它的同音性: (名单)。宏系统通过允许您编写代码来利用这一点 在编译时执行并修改其他代码的代码

    F#没有类似的东西——它是一种静态类型语言,从ML和Haskell那里借用了很多思想,并在.NET上运行

    你的问题类似于“如果我知道如何使用叉子,为什么我需要学习使用勺子?”

        4
  •  5
  •   sanxiyn    17 年前

        5
  •  3
  •   Matthias Benkard    17 年前

    如果我从Lisp转换到F#,那完全是因为我手头有一项任务,它从一些只使用.NET的库中受益匪浅。

    但我没有,所以我没有。

        6
  •  3
  •   J D    17 年前

    钱F#代码已经比Lisp代码更有价值,随着F#被广泛采用,这一差距将迅速扩大。

    换句话说,使用F#比使用Lisp有更好的机会获得稳定的收入。

    乔恩·哈洛普。

        7
  •  3
  •   Rainer Joswig mmmmmm    17 年前

    与大多数Lisp方言相比,F#是一种非常不同的语言。因此,F#为您提供了一个非常不同的编程角度-一个您无法从Lisp学习的角度。大多数Lisp方言最好用于符号软件的增量交互开发。同时,大多数Lisp方言不是函数式编程语言,更像是多范式语言——不同的方言在支持FPL功能上有不同的权重(没有副作用、不变的数据结构、代数数据类型等)。因此,大多数Lisp方言要么缺乏静态类型,要么不太重视静态类型。

    因此,如果你懂一些Lisp方言,那么学习F#会很有意义。只是不要认为你的Lisp知识太多适用于F,因为F是一种非常不同的语言。在学习Lisp时,C或Java的命令式编程需要忘却一些想法,在使用F#时,也需要忘却Lisp习惯(无类型、副作用、宏等)。F#也由微软推动,并利用.net框架。

        8
  •  2
  •   pearcewg    17 年前

    F#的好处是.NET开发(一般来说)被广泛采用,容易获得,并且更具大众市场。

    此外,现有的.NET开发人员更倾向于使用F#而不是LISP,如果这对您有意义的话。

    (这篇文章来自一位.NET开发人员,他在大学时编写并喜爱LISP)。

        9
  •  1
  •   mlarsen    17 年前

    我不知道你会不会?如果你觉得F#有趣,那就是一个原因。如果你的工作需要它,这将是一个理由。如果你认为这会让你更有效率,或者给你现有的知识带来附加值,那就是一个原因。

    但如果你觉得F#不有趣,你的工作不需要它,你也不认为它会让你更有效率或给你带来附加值,那你为什么要这样做?

        10
  •  0
  •   user922475 user922475    14 年前

    我知道这条线索很古老,但由于我偶然发现了这条线索,我只想谈谈我的理由。我学习F#只是为了获得专业机会,因为.NET在主导我所在领域的一类公司中占有很大的权重。功能范式在越来越多的定量和数据导向型公司中得到应用,我想成为这一趋势的早期参与者之一。目前还没有一种强大的函数式语言能够完全安全地与.NET库集成。事实上,我试图从Lisp代码中移植一些.NET,这确实是一个难题b/c FFI只支持c原语,而.NET互操作性需要一个“接口”构造,即使我知道如何在c中实现这一点,但这确实是一个巨大的难题。如果Lisp在下一个标准中额外增加一英里,需要一个C++类(包括虚拟函数W/VTABLE)和FFI中的C型风格接口类型,那将是非常好的。甚至还可以加入Java接口样式类型。这将允许与.NET库完全互操作,并使Lisp成为大型语言的有力竞争者。尽管如此,来自Lisp的背景使得学习F#相当容易。而且我喜欢F#在提供你通常会看到的定量类型工作的类型方面付出了额外的努力。我相信F#是在数学工作的基础上产生的,它本身比Lisp更有价值。

        11
  •  0
  •   Skatterbrainz    11 年前

    和拿锤子和扳手比较没有太大区别。选择最适合工作的工具。试图选择一个客观上“最好”的工具是胡说八道。无论如何,20年后,所有目前“热门”的语言都可能过时。

    推荐文章