android上的纯函数编程
这方面有什么进展吗?我希望能够在Android上用Haskell或类似语言编写纯功能代码。我尝试了一些Scala的例子,但开始时似乎很痛苦。有没有其他功能性JVM语言可以用来编写Android应用程序android上的纯函数编程,android,functional-programming,jvm,Android,Functional Programming,Jvm,这方面有什么进展吗?我希望能够在Android上用Haskell或类似语言编写纯功能代码。我尝试了一些Scala的例子,但开始时似乎很痛苦。有没有其他功能性JVM语言可以用来编写Android应用程序 编辑:编写本机android应用程序的函数式语言。我关于JVM的错误 我从未亲自尝试过,但你可以使用Xamarin.Android(我相信,还有Xamarin表单)进行F#编程。你可以看看导游。(它还包括示例代码) 作为背景,F#是.NET框架的函数式语言。它来源于ML;事实上,许多ML脚本几乎可
编辑:编写本机android应用程序的函数式语言。我关于JVM的错误 我从未亲自尝试过,但你可以使用Xamarin.Android(我相信,还有Xamarin表单)进行F#编程。你可以看看导游。(它还包括示例代码) 作为背景,F#是.NET框架的函数式语言。它来源于ML;事实上,许多ML脚本几乎可以“直接”编译为F#(需要注意的是,您可能需要进行一些重命名,因为F#有一些ML没有的额外关键字,以便支持几个特定于.NET的扩展) Xamarin支持Android、iOS和Windows phone的本机开发。Xamarin Forms允许所有三个平台使用单一代码库(它是Ionic的竞争对手) 还有一个要点:Android不使用JVM,即使你是用Java编写应用程序。(事实上,Android还没有出现)。通过安卓4.4使用;之后,它开始使用 您还可以尝试使用类似Scala的JVM语言创建JAR文件并为其创建绑定库 还请注意,您最终将使用至少某种程度上的混合范例——例如,活动之类的东西都是对象,而用于定义Android屏幕的XML文件在所有实际用途中都是声明性的编辑:最后一点有点争议-请参阅评论
最后一种可能性:我还没有仔细检查过这一点,但也尝试过一个声称你可以在Android中使用Scala的网站。我怀疑你是否能找到任何成熟的方法来为Android编写类似Haskell的代码。您确实需要实现Android API所需的Java抽象(实现活动等) 但是,如果你真的想用纯函数式的风格为Android编写代码,你可以尝试用纯函数式语言实现你的业务逻辑,这种语言可以编译成JVM,并从Java类中调用它。这种方法比试图完全以功能性风格实现它要简单得多 作为您的语言选择,您可以尝试
- ,它甚至有一个android库-
- ,它是非常新的,可能还没有人尝试在Android上使用它
以一种我从未见过的方式为我完成了大量的代码-惊人的体验(但它需要使用诸如sealed类之类的习惯用法,并且在正确的情况下)。如果你想要一个无痛苦的Gradle构建解决方案等,你只有两个选择:Java和Kotlin,当然,您应该选择Kotlin 具有您需要以功能性风格编写的大部分内容:
- 作为一等公民的职能
- 高阶函数
- 不变集合
和var
类似于Scala中的val
作为语句if-else
- 模式匹配的元素(
语句)其中
- 尾部递归
- 还有更多
选项
、尝试
、咖喱、备忘录、持久数据结构等等
要开始使用Kotlin,只需安装最新版本,它已经具有内置的Kotlin支持
顺便说一句,不要被“纯”的功能性极化;)毕竟,100%的“纯”意味着没有副作用,这意味着你的应用程序无法与用户交互;)
希望这有帮助:)我认为Clojure也可以在JVM上运行。我没有这方面的经验。“这似乎是一个痛苦的开始”大多数函数式编程语言有一个陡峭的学习曲线。对于这个主题,我认为您应该询问如何使X语言在Android中工作。Android不使用JVM,所以这很可能是最大的痛点。要求人们推荐编程语言是基于观点的。我更多地谈论的是gradle构建等,有时存在的例子是。我要求更多的成熟度,工具和东西Scala不是一个痛苦的开始获取sbt,添加适当的插件,如果这仍然相关,Eta已经用于Android。它还有一个Gradle插件和更多,去年发生了很多事情,请查看该网站!活动可能是对象,但这并不一定意味着解决方案将是面向对象的。@4castle我不确定我是否遵循-我认为这将意味着您至少使用了多种范例(函数式、声明式和面向对象)。我是说面向对象编程是一种范例。对象是一种数据类型。正如面向对象编程语言可以使用