Functional programming 函数式语言本质上很难与非函数式语言建立接口,这是真的吗

Functional programming 函数式语言本质上很难与非函数式语言建立接口,这是真的吗,functional-programming,calling-convention,Functional Programming,Calling Convention,有人告诉我这是真的,但我始终不明白为什么,也不相信。对它进行检查似乎是这样。这是真的吗?如果是,原因是什么?不。函数式编程语言只是一种鼓励将函数本身作为值处理的语言。这与它是否与其他语言很好地集成是正交的。事实上,Clojure、Scala和F#被设计为分别与Java、Java(再次)和C#进行互操作 使API适应目标语言的习惯用法可能需要一些工作。但是这个问题并不是函数式语言所独有的,大多数C接口也不会像Python中那样好看!这项工作是可选的:Haskellnetwork包只是围绕伯克利套接

有人告诉我这是真的,但我始终不明白为什么,也不相信。对它进行检查似乎是这样。这是真的吗?如果是,原因是什么?

不。函数式编程语言只是一种鼓励将函数本身作为值处理的语言。这与它是否与其他语言很好地集成是正交的。事实上,Clojure、Scala和F#被设计为分别与Java、Java(再次)和C#进行互操作

使API适应目标语言的习惯用法可能需要一些工作。但是这个问题并不是函数式语言所独有的,大多数C接口也不会像Python中那样好看!这项工作是可选的:Haskell
network
包只是围绕伯克利套接字的一个薄薄的包装,然而人们非常乐意使用它


我认为100%纯函数式语言可以根据其定义完全不与外部世界接口

这是一个常见的误解

纯功能性语言不禁止副作用;它通过
IO
monad(Haskell)、线性类型(Mercury)或代数效应(Idris)对它们进行注释。在这种语言中,调用外部函数与任何其他I/O操作没有什么不同


此外,如果程序员知道外部函数是纯函数(例如,LAPACK例程),那么他们可以否决编译器并将其声明为纯函数。在Haskell中,这可以通过从函数签名中省略
IO
来实现。

否。函数式编程语言只是一种鼓励将函数本身作为值处理的语言。这与它是否与其他语言很好地集成是正交的。事实上,Clojure、Scala和F#被设计为分别与Java、Java(再次)和C#进行互操作

使API适应目标语言的习惯用法可能需要一些工作。但是这个问题并不是函数式语言所独有的,大多数C接口也不会像Python中那样好看!这项工作是可选的:Haskell
network
包只是围绕伯克利套接字的一个薄薄的包装,然而人们非常乐意使用它


我认为100%纯函数式语言可以根据其定义完全不与外部世界接口

这是一个常见的误解

纯功能性语言不禁止副作用;它通过
IO
monad(Haskell)、线性类型(Mercury)或代数效应(Idris)对它们进行注释。在这种语言中,调用外部函数与任何其他I/O操作没有什么不同


此外,如果程序员知道外部函数是纯函数(例如,LAPACK例程),那么他们可以否决编译器并将其声明为纯函数。在Haskell中,这可以通过从函数签名中省略
IO
来实现。

FFI指的是对函数更常见的描述,它只是一个代码块,您可以使用参数调用它并获得结果。函数式编程不仅仅意味着“使用函数”,它还意味着许多额外的含义。函数应该是纯函数(没有副作用),并且还有其他属性使语言具有“功能性”。如果你对此感到好奇,我将学习更多关于函数式编程和lambda演算的知识。我知道函数式语言是什么。我只是想知道函数式编程语言与另一种语言的接口是否真的很难实现,比如python与C的接口。我认为这个问题的范围太广,不属于堆栈溢出。我赞同埃弗特的建议,即做更多的研究,然后问一个更具体的问题。我认为100%纯函数式语言从定义上讲可以完全不与外部世界接口,包括阅读文件、使用网络或接受用户输入。我只能猜测你的同事的意思(这里没有太多的细节),但这是我想到的。问题的范围很简单,在函数式语言中使用FFI是否更困难。我知道有些是存在的,但它真的更难吗?如果是,为什么?这个问题的范围如此之小,事实上我会把“不”作为一个完整的答案!FFI指的是一种更常见的函数描述,它只是一段代码,您可以使用参数调用它并获得结果。函数式编程不仅仅意味着“使用函数”,它还意味着许多额外的含义。函数应该是纯函数(没有副作用),并且还有其他属性使语言具有“功能性”。如果你对此感到好奇,我将学习更多关于函数式编程和lambda演算的知识。我知道函数式语言是什么。我只是想知道函数式编程语言与另一种语言的接口是否真的很难实现,比如python与C的接口。我认为这个问题的范围太广,不属于堆栈溢出。我赞同埃弗特的建议,即做更多的研究,然后问一个更具体的问题。我认为100%纯函数式语言从定义上讲可以完全不与外部世界接口,包括阅读文件、使用网络或接受用户输入。我只能猜测你的同事的意思(这里没有太多的细节),但这是我想到的。问题的范围很简单,在函数式语言中使用FFI是否更困难。我知道有些是存在的,但它真的更难吗?如果是,为什么?这个问题的范围如此之小,事实上我会把“不”作为一个完整的答案!谢谢你的回答。我猜那个告诉我很难做到的人是被误导了,这很奇怪,因为他很有资格。谢谢你的回答。我猜那个告诉我很难做到的人是被误导了,这很奇怪,因为他很有资格。